MYSQL新手和子查询
我有两张桌子MYSQL新手和子查询,mysql,Mysql,我有两张桌子 T1 T2 id id name name t2_id 我想得到所有在T1中没有链接的T2记录,我该怎么做? 我尝试了子查询,但失败了 SELECT * FROM T2 WHERE T1.t2_id NOT IN (SELECT T2.id FROM T2) 错误代码:1054。“in/ALL/ANY子查询”中的未知列“T1.t2_id” 我想获取所有未在T1中链接的T2记录,如何才能做到这一点 T1中的是 当然,到T2的链接是通过T2.id完成的,所
T1 T2
id id
name name
t2_id
我想得到所有在T1中没有链接的T2记录,我该怎么做?
我尝试了子查询,但失败了
SELECT * FROM T2
WHERE T1.t2_id NOT IN
(SELECT T2.id FROM T2)
错误代码:1054。“in/ALL/ANY子查询”中的未知列“T1.t2_id”
我想获取所有未在T1中链接的T2记录,如何才能做到这一点
T1中的是
当然,到T2的链接是通过T2.id完成的,所以
似乎是你想要的
如果仔细看一下,SQL几乎就像日常语言一样。差不多了。差不多了,但是请注意,您只能在WHERE子句的from子句中引用表中的列。 所以你可能想做这样的事情:
SELECT *
FROM T2
WHERE T2.id NOT IN
(SELECT T1.t2_id FROM T1)
你把它倒过来:
SELECT *
FROM T2
WHERE id NOT IN (SELECT t2_id FROM T1)
这也可以写成外部连接,MySQL通过这种方式表现得更好:
SELECT T2.*
FROM T2
LEFT JOIN T1 ON T1.t2_id = T2.id
WHERE T1.id IS NULL
确保在T1.t2\u id上有一个索引,这样才能很好地执行此操作。我需要获取所有t2records@Goku将您的查询与您想要的内容进行仔细比较。为什么-1?我迷路了,我能寻求帮助吗?
SELECT *
FROM T2
WHERE id NOT IN (SELECT t2_id FROM T1)
SELECT T2.*
FROM T2
LEFT JOIN T1 ON T1.t2_id = T2.id
WHERE T1.id IS NULL