是否可以考虑这个SQL Union语句?

时间:2012-09-08 19:51:18

标签: mysql sql union

在这个查询中,我使用UNION简单地组合了两个几乎相同的查询的结果。唯一的区别是WHERE子句中的tp.t_id是不同的。我在这里重命名了表名,只是为了突出显示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=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

1 个答案:

答案 0 :(得分:5)

是的,请使用IN()

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 IN (1, 2) AND s.type=1
GROUP BY tp.t_id