我有两个表T1和T2。我想从T2表中选择所有行,其中t1_id不等于T1表中的任何id。这是行不通的:在相关表上选择SQL语句
SELECT t2.id, t2.t1_id, t2.data FROM T2.t2, T1.t1 WHERE t2.t1_id != t1.id
我有两个表T1和T2。我想从T2表中选择所有行,其中t1_id不等于T1表中的任何id。这是行不通的:在相关表上选择SQL语句
SELECT t2.id, t2.t1_id, t2.data FROM T2.t2, T1.t1 WHERE t2.t1_id != t1.id
你可以使用子查询使用NOT IN子句如下:
SELECT t2.id, t2.t1_id, t2.data
FROM T2 t2
WHERE t2.t1_id NOT IN (SELECT DISTINCT id
FROM T1)
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
使用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
我需要ti获取行,其中t1_id不等于T1中的任何id。 null不是eaxctly,导致我想要的... – nowiko
SELECT x。* FROM x LEFT JOIN y ON y.id = x.id WHERE y.id IS NULL – Strawberry