1
我目前使用下面的查詢(確實簡化):COUNT()和更復雜的查詢中選擇
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',並且這兩個計數行中的一個已經被第一個查詢計數。
所以,既然這兩個查詢有一些共同的IDS,我不想算兩次,我想出了:
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
你會發現,第二子查詢內第二查詢與第一個查詢完全相同。
我的問題是,我無法做到這一點,而不執行相同的查詢兩次(第一次計算結果,第二次實際檢索這些結果)。
痛痛快快的一個使用UNION操作,將消除重複你解決該問題:-)
我很笨,我想刪除那個問題..謝謝你打開我的眼睛老兄:D – Pioul