我有两个表,主键为“poll_id”,每个表中的列名为“object_id”。 我无法从 t1 获取 t2 中不存在的对象,并且带有 poll_id(主键)。
T1 T2
poll_id|object_id poll_id|object_id
1 | 2 1 | 2
1 | 3 |
我需要获取 [poll_id]=>1,[object_id]=>3
最佳答案
使用NOT EXISTS
SELECT poll_id, object_id
FROM t1
WHERE NOT EXISTS
( SELECT *
FROM t2
WHERE t2.poll_id = t1.poll_id
AND t2.object_id = t1.object_id
)
AND poll_id = 1 ; -- additional requirement
使用LEFT JOIN/IS NULL
SELECT t1.poll_id, t1.object_id
FROM t1
LEFT JOIN t2
ON t2.poll_id = t1.poll_id
AND t2.object_id = t1.object_id
WHERE t2.object_id IS NULL
AND t1.poll_id = 1 ; -- additional requirement
使用NOT IN:
SELECT poll_id, object_id
FROM t1
WHERE (poll_id, object_id) NOT IN
( SELECT poll_id, object_id
FROM t2
)
AND poll_id = 1 ; -- additional requirement
关于php - 查询以获取列的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11886276/