我在数据库中有三个表,其中第一个表由自由职业者部分组成,第二个表是客户表,第三个表是当客户选择一个自由职业者时,3个表存储了自由职业者的id和客户的id。但是当我想检索客户选择的自由职业者的信息时,会显示上面标题中提到的错误,这里是我的查询
SELECT * FROM `freelancer_detail`
WHERE f_id = (select freelancer_id
from shortlisted_freelancers
where shortlisted_id =(SELECT postJob_id from client_detail
WHERE client_email = "joshua@gmail.com"))
5条答案
按热度按时间j0pj023g1#
如果另一个表中有多个值,请使用in子句,
jm2pwxwz2#
用于
lztngnrs3#
试试这个:
sg24os4d4#
尽管目前提交的所有答案看起来都比op代码好,但它们实际上并没有提供原始问题的答案,如何让子查询只返回一行呢。
一个选项是使用selecttop1,但这取决于您是否包含orderby子句,以确保结果集中的第一行是您想要的。
我并不主张你真的这样做,(我认为murat建议的连接更好)像下面这样的东西可以确保子查询只返回一行。
hk8txs485#
使用
join
:笔记:
始终限定所有列引用,尤其是当查询引用多个表时。
使用表别名,因此查询更易于编写和读取。
字符串的标准sql分隔符是单引号,而不是双引号。
你也应该知道
join
s通常比in
s。