【发布时间】:2013-03-05 16:32:37
【问题描述】:
让我们有一个简单的表格:
CREATE TABLE dbo.test
(
c1 INT
)
INSERT INTO test (c1) VALUES (1)
INSERT INTO test (c1) VALUES (2)
INSERT INTO test (c1) VALUES (3)
接下来计算一些 SUM:
SELECT SUM(t1.c1) FROM test AS t1 , test AS t2
WHERE t2.c1 = 1
输出为: 6 。简单易行。
但如果我跑:
SELECT SUM(t1.c1), * FROM test AS t1 , test AS t2
WHERE t2.c1 = 1
输出是:
6 2 2
6 2 3
6 2 1
6 3 2
6 3 3
6 3 1
6 1 2
6 1 3
6 1 1
我的问题是:为什么第二个输出与 WHERE 子句中的条件不匹配?
【问题讨论】:
-
第二次查询无效。我试过了(感谢创建可执行脚本!)。
-
你确定这是 T-SQL 吗?我尝试在 SQL Server 2008 and get an error 中运行它。
-
您的第二个查询对 T-SQL 无效
-
各位,我正在使用 Sybase。
-
您没有包含 group 子句 - 看起来 Sybase 只是执行 SELECT * 但允许您添加一个非分组聚合(它只是对整个表求和),它为所有行生成 6输出列表 - 不知道为什么它不尊重 WHERE
标签: sql tsql sap-ase cartesian-product