我有两个查询计数数据:两次与计数SELECT查询到一个查询
SELECT x.Id, COUNT(DISTINCT y.Id)
FROM X x
INNER JOIN Y y ON x.Id = y.otherId
SELECT x.Id, COUNT(DISTINCT z.Id)
FROM X x
INNER JOIN Z z ON x.Id = z.otherId
两个查询返回正确的值执行已分离时。
但我想这些查询相结合,一个单一的查询:
SELECT x.Id, COUNT(DISTINCT y.Id), COUNT(DISTINCT z.Id)
FROM X x
INNER JOIN Y y ON x.Id = y.otherId
INNER JOIN Z z ON x.Id = z.otherId
当我做到这一点,相比于单独执行的查询时,这两个方面都是错误的。
为什么会发生这种情况,我真的很困惑。解决办法可能很简单,但我现在还没有任何线索。
你好,为什么inner join会过滤出两个表中不匹配的值?例如,我使用x.Id = y.otherId,这应该得到匹配的值,不是吗? – Swag
@ y451n。 。 。一些'x.id'在'y'表中有匹配;有些在'z'表中有匹配。一些在两个,但一些只在一个。通过内连接,您只能在两个表中获得匹配。 –