Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 我可以使用子查询来完成where子句吗?_Mysql_Subquery_Where Clause_Unique Index - Fatal编程技术网

Mysql 我可以使用子查询来完成where子句吗?

Mysql 我可以使用子查询来完成where子句吗?,mysql,subquery,where-clause,unique-index,Mysql,Subquery,Where Clause,Unique Index,我有两个由membership.ID和memberDues.memberID连接的表。成员资格表有一列firstLast,它对于每一行都是唯一的。如果我有firstLast的值,那么我应该能够找到membership.ID并将其与memberDues.memberID进行比较。我正在使用以下查询,但它不起作用: SELECT * FROM memberDues, membership WHERE memberID = ( SELECT ID FROM membership WHERE fi

我有两个由membership.ID和memberDues.memberID连接的表。成员资格表有一列firstLast,它对于每一行都是唯一的。如果我有firstLast的值,那么我应该能够找到membership.ID并将其与memberDues.memberID进行比较。我正在使用以下查询,但它不起作用:

SELECT * FROM memberDues, membership 
WHERE memberID = 
( SELECT ID FROM membership 
WHERE firstLast = 'Jim Smith') 
ORDER BY payDate DESC 
LIMIT 1

结果从其行中获取正确的memberDues.memberID和其他数据,但从成员资格表中提取一个不相关的数据集,即使ID是错误的。查询有什么问题?

您应该在中使用
,而不是等号:

SELECT * FROM memberDues, membership WHERE memberID IN
    (SELECT ID FROM membership WHERE firstLast = 'Jim Smith')
    ORDER BY payDate DESC LIMIT 1

您可以在共享的
ID
值上连接这两个表,然后只能选择那些具有
firstLast='Jim Smith'
的行。我认为使用以下查询可以更有效地实现您想要的(避免一次额外选择):

SELECT aa.*, bb.*
FROM memberDues AS aa
INNER JOIN membership AS bb
ON aa.memberID = bb.ID
WHERE bb.firstLast = 'Jim Smith'
ORDER BY aa.payDate DESC
LIMIT 1;
这个问题怎么了

您的查询联接两个表,而不指定与它们相关的条件

为了快速回答你的问题,我会尽量详细说明 where子句中的
membership.ID=memberDues.memberID


我个人的建议是在ON子句中使用这个条件使用左连接。但它是更高级的SQL编码,选择取决于此特定应用程序的结构和需求。

您正在进行笛卡尔积。。。交叉连接。。。m行和n行在结果集中生成m*n行。然后你会说,嘿,从allalso的排列中给我一行,select*with JOIN倾向于提供一些不受欢迎的列。对于快速查询很好,但是在生产中清理一下谢谢Kostas,这是一个优雅的解决方案,很有意义。它也有用!伟大的我很高兴我帮助了你。