【发布时间】:2013-12-04 15:25:35
【问题描述】:
我有两个独立的查询,它们几乎返回相同的内容:
select id
from t
where id<>''
GROUP BY id
having count(*) >= 2;
select id
from t2
where id is not null
GROUP BY id
having count(*) >= 2
ORDER BY id ASC;
其值出现多次的 id 列表。第一个查询返回的比第二个多,所以我需要以某种方式离开它们以获取第一个查询中而不是第二个查询的结果。我试图做一个左连接,但它不能正常工作。
我也尝试了以下方法,但无济于事:
select id
from t
where id<>''
GROUP BY id
having count(*) >= 2
not in (select id from t2 where id is not null GROUP BY id having count(*) >= 2
ORDER BY id ASC)
其他信息
查询一为我提供了表 1 具有相同值的所有 id,查询 2 为我提供了表 2 的所有相同值。还有一些额外的陷阱,例如表 1 中有一些空白 id 而有一些表 2 中的空值,因此条件不包括前者的空白和后者的空值。所以我得到了这两个几乎相同的单独结果,除了结果 1 中声称结果 2 中没有 但只有在运行这些查询时,因为它们在表 1 中重复但没有在表 2 中。尽管它们确实存在于表 2 中。因此,t1.id t2.id 的简单左连接将不起作用,因为它们确实存在于 t2 中。
【问题讨论】:
-
您实际上希望查询做什么?
-
@ExplosionPills 在我的第一个查询中给我那些不在第二个查询中的。
标签: mysql left-join outer-join