【发布时间】:2019-01-25 22:35:59
【问题描述】:
我有两个 SQL 查询,其中首先使用内连接来根据条件进行匹配,而另一个则不使用。最终,我想要每个查询创建的列之间的差异。我怎样才能做到这一点?
我已经尝试联合和加入一些类似帖子中的查询,但它不起作用。我想知道问题是否与每个查询中的连接有关。
查询 1:
SELECT A.date, COUNT(DISTINCT A.id)
FROM A
INNER JOIN B
ON A.id = B.id AND A.date = B.date
AND B.col1 = 'value1'
LEFT JOIN C on C.key = A.key
WHERE A.col1 = 'value2'
AND C.category = 'cat1'
GROUP BY 1
ORDER BY 1 DESC
查询 2:
SELECT A.date, COUNT(DISTINCT A.id)
FROM A
LEFT JOIN C on C.key = A.key
WHERE A.col1 = 'value2'
AND C.category = 'cat1'
GROUP BY 1
ORDER BY 1 DESC
【问题讨论】:
-
你能定义你所说的“差异”吗? 1970-Jan-01 和 1970-Jan-03 之间的“差异”是“2 天”或“是”
-
您的查询非常相似,可以在一个更短的查询中进行优化。如果您能提供示例数据和预期输出,这将有所帮助...
-
注意:在这两个查询中,
C.category=...在WHERE子句中的存在会破坏LEFT JOIN C(也就是说,它将它变成INNER JOIN)。
标签: sql