【发布时间】:2018-07-31 20:13:41
【问题描述】:
我正在使用以下查询连接两个表:
select * from t1
LEFT JOIN t2 ON t1.First1=t2.FirstName
and t1.Last1=t2.LastName
and t1.City=t2.City
and t1.ST=t2.State;
现在,如何运行单独的查询来打印 t2 中未连接的行?
我尝试对字段使用 NOT IN,但收到错误:错误代码:1241。操作数应包含 1 列
select * from t2 where t2.RefID NOT IN (
select * from t1,t2 where t1.First1=t2.FirstName
and t1.Last1=t2.LastName
and t1.City=t2.City
and t1.ST=t2.State);
【问题讨论】:
-
"操作数应该包含 1 列" 是逻辑
t2.RefID NOT IN(select * ...)当使用 NOT IN 时,您不能使用 *... 但是 MySQL 允许您使用此 SQL @987654324 @ -
如果您只想显示来自 t2 的未连接或不匹配的值,您只需将
WHERE t2.anny_column IS NULL语句添加到 LEFT JOIN 查询 -
您的 NOT IN 失败,因为它的格式必须是
X IN (SELECT single_field...或(X, Y, ...) IN (SELECT X, Y, ....如果子查询是SELECT t2.RefID...可能会正常工作;但请参阅我的答案以获取可能更有效的查询。