我目前正在使用以下查询(确实简化):
SELECT
(
SELECT COUNT(id)
FROM bla_1
WHERE id NOT IN (SELECT id FROM blahhh)
)
+
(
SELECT COUNT(id)
FROM bla_2
WHERE id NOT IN (SELECT id FROM blahhh)
)
as count
在有人提到它之前,我可以添加bla_1
和bla_2
不包含相同的数据,即使使用简化的查询也是如此。
这里的问题是第二个查询计算的某些ID已由第一个查询处理。换句话说,第二个查询可以返回' 2'并且第一个查询已经计算了这两个计数行中的一个。
因此,由于两个查询都有一些共同的ID,我不想计算两次,我想出了:
SELECT
(
SELECT COUNT(id)
FROM bla_1
WHERE id NOT IN (SELECT id FROM blahhh)
)
+
(
SELECT COUNT(id)
FROM bla_2
WHERE id NOT IN (SELECT id FROM blahhh)
AND id NOT IN (SELECT id
FROM bla_1
WHERE id NOT IN (SELECT id FROM blahhh)
)
)
as count
您会注意到第二个查询中的第二个子查询与第一个查询完全相同。
我的问题是,我无法在不执行相同查询两次的情况下完成此工作(第一次计算结果,第二次实际检索结果)。
非常喜欢解决这个问题的人: - )
答案 0 :(得分:3)
尝试使用UNION操作来消除重复操作。
SELECT COUNT(ID) AS MyCount
FROM
( SELECT ID FROM Table1 WHERE /*....*/
UNION
SELECT ID FROM Table2 WHERE /*....*/
) r