1
在這個查詢中,我使用了一個UNION來簡單地組合兩個幾乎相同的查詢的結果。唯一的區別是WHERE子句中的tp.t_id不同。我在這裏重命名了表名,只是爲了突出顯示UNION中的兩個查詢是如何相似的。 (我不認爲這些表實際上被稱爲什麼是相關的)。是否可以將此SQL聯合聲明分解?
我想知道是否有辦法將這些查詢中的冗餘分解出來,如果沒有其他用於維護的目的。
謝謝!
SELECT SUM(s.count) AS total
FROM Table1 s
JOIN Table2 p ON p.id=s.p_id
JOIN Table3 tp ON tp.p_id=s.p_id
JOIN Table4 t ON tp.p_id=s.p_id
WHERE s.g_id=1 AND tp.t_id=1 AND s.type=1
UNION
SELECT SUM(s.count) AS total
FROM Table1 s
JOIN Table2 p ON p.id=s.p_id
JOIN Table3 tp ON tp.p_id=s.p_id
JOIN Table4 t ON tp.p_id=s.p_id
WHERE s.g_id=1 AND tp.t_id=2 AND s.type=1
這並不返回相同的結果(這固然是奇數 - 爲2行,除非'SUM'是相同的時,它會之一) –
如果我GROUP BY t_id就足夠了。 – glutz
@MartinSmith:的確,謝謝,我已經添加了「GROUP BY」。 –