我有两张桌子:
- 人员名单;
- 我想忽略的人的列表。
当我阅读人员列表时,我不想看到列表中被忽略的人。
我当前的解决方案是第二次查询数据库(以选择我想忽略的人)并将它们从我用 PHP 创建的数组中删除。它正在工作,很好。
但是,我想在 MySQL 中这样做。我知道JOIN
只有当该行存在于另一个表中时才会加入。我正在寻找不同的东西(如果行存在,则不会显示条目)。
我在 Google 中搜索过,但缺少“关键字”,但没有给我任何结果。
谢谢
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
在不知道您的架构的情况下,我会建议以下内容:
SELECT * FROM people WHERE id NOT IN (SELECT person_id FROM ignored_people)
你可以试试这样的
SELECT * FROM people p WHERE NOT EXISTS (SELECT i.id FROM ignorePeople i where p.id = i.id )
这是关于 MySQL 中 EXISTS 的链接