Я хочу получить строки из таблицы a, в которой столбец unique_key находится в таблице b, в то же время, unique_key не существует в таблице c. Итак, если я напишу таблицу,
table a
+----+------+-----------+
| id | Name | int_value |
+----+------+-----------+
| a1 | aa | 1 |
| a2 | bb | 2 |
| a3 | cc | 5 |
+----+------+-----------+
table b
+----+------+-----------+
| id | Name |unique_key |
+----+------+-----------+
| a1 | aa | u1 |
| a2 | bb | u2 |
| a3 | cc | u5 |
+----+------+-----------+
table c
+----+------+-----------+
| id | Name |unique_key |
+----+------+-----------+
| c1 | aa | u1 |
| c2 | bb | u2 |
| c3 | cc | u3 |
+----+------+-----------+
В результате я хочу получить
id name int_value b.unique_key
a3 cc 5 u5
, потому что u5 не существует в таблице c. Я пробовал эти sqls, но ни один из них не дал мне правильного результата. Что бы вы сделали?
SELECT a.*, b.unique_key
FROM a
LEFT JOIN ( SELECT id FROM b ) b
ON a.id = b.id
LEFT JOIN ( SELECT unique_key FROM c ) c
ON b.unique_key <> c.unique_key;
SELECT a.*, b.unique_key, c.unique_key
FROM a
LEFT JOIN ( SELECT id FROM b ) b
ON a.id = b.id
LEFT JOIN ( SELECT unique_key FROM c ) c
ON b.unique_key = c.unique_key
WHERE c.unique_key IS NULL;