从一个表中查找不存在于另一个表中的记录并在第三个表中忽略
问题描述:
基于使用此SQL查询,我在此处找到我期望的结果基于user_id
。当我将这添加到查询时,我最终得不到结果。
从一个表中查找不存在于另一个表中的记录并在第三个表中忽略
SQL - find records from one table which don't exist in another
我有三个表,一个是我的客户端的内容,二是哪些内容客户同意并使用,第三个是内容被忽略。
我期待抓住的结果是没有被使用或不被忽略的内容。
available_content table
+----+
| id |
+----+
| 1 |
+----+
| 2 |
+----+
| 3 |
+----+
| 4 |
+----+
| 5 |
+----+
posted_content table
+----+----------+
| id | user_id |
+----+----------+
| 1 | 123 |
+----+----------+
| 2 | 123 |
+----+----------+
| 3 | 456 |
+----+----------+
ignored_content table
+----+----------+
| id | user_id |
+----+----------+
| 5 | 123 |
+----+----------+
| 1 | 456 |
+----+----------+
| 2 | 456 |
+----+----------+
SELECT a.id
FROM available_content AS a
LEFT OUTER JOIN posted_content AS b
ON (a.id = b.id) WHERE b.id IS NULL AND b.user_id = '123'
results
+----+
| id |
+----+
| 3 |
+----+
| 4 |
+----+
答
SELECT a.id
FROM available_content a
LEFT OUTER JOIN posted_content b ON (a.id = b.id AND b.user_id = '123')
LEFT OUTER JOIN ignored_content c ON (a.id = c.id AND c.user_id = '123')
WHERE b.id IS NULL AND c.id IS NULL
哦扣..它是那么容易。 – Tim 2015-03-08 20:51:30