我有两张桌子:
Table "contact"
id | customer_id
----+-------------
1 | 123
2 | 123
3 | 123
4 | 888
和
Table "user_contact"
user_id | contact_id
--------+------------
456 | 1
456 | 2
789 | 3
999 | 4
要选择 customer_id 为 123且存在于456 中user_contact
的所有联系人user_id
,我可以:
SELECT
contact.id
FROM
contact JOIN user_contact ON
contact.id = user_contact.contact_id
WHERE
contact.customer_id = 123 AND
user_contact.user_id = 456
如何选择所有具有customer_id
123 但不存在于user_contact
456user_id
的联系人?
试:
SELECT
contact.id
FROM
contact JOIN user_contact ON
contact.id = user_contact.contact_id
WHERE
contact.customer_id = 123 AND
user_contact.user_id != 456
显然不起作用,因为它为每个具有 != 456 的行contact
返回user_contact
一行user_id
。