在相关表上选择SQL语句

时间:2014-12-24 08:29:46

标签: mysql sql select join relational-database

我有两张桌子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

3 个答案:

答案 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