我有两张桌子:
当我阅读人员列表时,我不希望看到列表中被忽略的人。
我目前的解决方案是第二次查询数据库(选择我想忽略的人)并从我用PHP创建的数组中删除它们。它工作正常。
但是,我想在MySQL中这样做。我知道JOIN
只有在另一个表中存在该行时才会加入。我正在寻找不同的东西(如果行存在,则不会显示条目)。
我在谷歌搜索过但缺少“关键字”却没有给我带来任何结果。
由于
答案 0 :(得分:7)
SELECT * FROM Person
LEFT OUTER JOIN IgnoredPerson
ON Person.id = IgnoredPerson.id
WHERE IgnoredPerson.id IS null
说明:
通过where子句
从右侧排除我们不想要的记录
http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html
答案 1 :(得分:2)
在不了解您的架构的情况下,我会提出以下建议:
SELECT * FROM people WHERE id NOT IN (SELECT person_id FROM ignored_people)
答案 2 :(得分:2)
你可以试试这样的事情
SELECT * FROM people p WHERE NOT EXISTS (SELECT i.id FROM ignorePeople i where p.id = i.id )
here's关于MySql中EXISTS的链接