我有两张桌子T1和T2。我想从T2表中选择所有行,其中t1_id不等于T1表中的任何id。这不起作用:
SELECT t2.id, t2.t1_id, t2.data FROM T2.t2, T1.t1 WHERE t2.t1_id != t1.id
答案 0 :(得分:1)
您可以将子查询与NOT IN子句一起使用,如下所示:
SELECT t2.id, t2.t1_id, t2.data
FROM T2 t2
WHERE t2.t1_id NOT IN (SELECT DISTINCT id
FROM T1)
答案 1 :(得分:1)
使用 LEFT JOIN 从左表中获取所有记录并添加where条件并检查第二个表的空值以查找左表的不匹配记录
试试这个:
SELECT t2.id, t2.t1_id, t2.data
FROM T2.t2
LEFT OUTER JOIN T1.t1 ON t2.t1_id = t1.id
WHERE t1.id IS NULL
答案 2 :(得分:0)
SELECT t2.id, t2.t1_id, t2.data
FROM T2.t2
LEFT JOIN T1.t1 ON t2.t1_id = t1.id
GROUP BY t2.id, t2.t1_id, t2.data
HAVING sum(t1.id is not null) = 0