到目前为止,我似乎还无法弄清楚。我正在尝试联接两个表,并且仅选择表A中的表B中没有匹配列的行。例如,假设我们有一个用户表和一个已发送表。
users表具有以下列:id, usernamesent表具有以下列:id, username
我想从users中选择在username表中不存在sent的所有行。因此,如果tomuserssent中,则不会选择他。如果他使用users而不是sent,则将选择他。我试过了,但是根本没有用:

SELECT pooltest.name,senttest.sentname
FROM pooltest,senttest
WHERE pooltest.name != senttest.sentname

最佳答案

试试这个SQL:

SELECT users.username
FROM  users
LEFT JOIN sent ON sent.username = users.username
WHERE sent.username IS NULL;

我认为更好的方法是:
SELECT users.username
FROM  users
LEFT JOIN sent ON sent.id = users.id
WHERE sent.id IS NULL;

由于两个id字段都将被索引(我会想到的主键),因此该查询将比我建议的第一个查询更好地优化。

但是,您可能会发现我的第一个建议对您更好,这取决于您对应用程序的要求。

关于mysql - MySQL选择其他表中没有匹配列的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10968767/

10-11 09:07