SQL Server 两个查询之间的区别?

问题描述 投票:0回答:2

这是我的桌子:

enter image description here

我有一个问题,我不明白以下两个查询之间的区别:

查询#1:

SELECT 
    productID,
    SUM(soldQty)
FROM
    Sales
WHERE
    soldQty <> 0
GROUP BY  
    ProductID

查询#2:

SELECT
    productID,
    SUM(soldQty)
FROM
    Sales
GROUP BY 
    ProductID
HAVING
    SUM(soldQty) <> 0

哪些

productID
会导致查询?不是一样吗

sql sql-server group-by having
2个回答
2
投票

查询相同。第一个查询将查找

SUM
值不等于
soldQty
的行。
但是,
second

查询将返回

0 中值的

 不等于 
total
SUM 的行。因此,如果值的
soldQty
达到
0
,例如
SUM
0
10
,这些行将被省略。第一次查询的情况并非如此。
-4

请注意,第一个数据集中返回了 
-6

SELECT MyColumn,
       SUM(IntColumn) AS TotalIntColumn
FROM (VALUES(1,0),
            (1,2),
            (1,5),
            (1,0),
            (1,-2),
            (2,10),
            (2,-4),
            (2,-6),
            (2,0))V(MyColumn,IntColumn)
WHERE IntColumn <> 0
GROUP BY MyColumn;


SELECT MyColumn,
       SUM(IntColumn) AS TotalIntColumn
FROM (VALUES(1,0),
            (1,2),
            (1,5),
            (1,0),
            (1,-2),
            (2,10),
            (2,-4),
            (2,-6),
            (2,0))V(MyColumn,IntColumn)
GROUP BY MyColumn
HAVING SUM(IntColumn) <> 0;
的值为
2
,但在第二个数据集中未返回。
    


0
投票

查询 2 将忽略与累计销售金额 <> 0 的所有产品相关的所有记录

© www.soinside.com 2019 - 2024. All rights reserved.