带子查询的DISTINCT或GROUP BY

时间:2012-09-04 05:09:26

标签: group-by subquery distinct

你好我有这个问题:

SELECT DISTINCT a.id, a.runcd, 
(SELECT SUM(b.CALVAL) FROM GRS b 
WHERE b.PCode=11000 
AND a.id = b.id 
AND a.runcd=b.runcd) AS qval
FROM GRS a
WHERE a.crt = k04

这是一样的:

SELECT a.id, a.runcd,
(SELECT SUM(b.CALVAL) FROM GRS b 
WHERE b.PCode=11000 
AND a.id = b.id 
AND a.runcd=b.runcd) AS qval
FROM GRS a
WHERE a.crt = k04
GROUP BY id,runcd

到目前为止,这会返回相同的结果,但我不知道这是否是正确的选择。谢谢!

2 个答案:

答案 0 :(得分:2)

对于这个特定的查询,无论数据库供应商如何,它们的行为总是完全相同(至少我不能想到使用mysql,sql server,postgres或oracle查询这个查询的任何问题)。

答案 1 :(得分:2)

  

GROUP BY可让您使用汇总功能,例如AVGMAXMIN,   SUMCOUNTDISTINCT只会删除重复项。

SQL SERVER – Difference between DISTINCT and GROUP BY – Distinct vs Group By.
在您的情况下,即使您使用子查询,它也会给您相同的结果,因为您只检索SUM(b.CALVAL)