【发布时间】:2016-03-09 15:56:42
【问题描述】:
我正在从 excel 中查询访问数据库。我有一张和这张类似的桌子:
id Product Count
1 A 0
1 B 5
3 C 0
2 A 0
2 B 0
2 C 5
3 A 6
3 B 5
3 C 7
我想从中返回此 ID 的计数总和不为 0 且产品为 A 或 B 的所有行(包括该产品的计数为 0 的行)。所以从上表,我会得到:
id Product Count
1 A 0
1 B 5
3 A 6
3 B 5
下面的查询给出了正确的输出,但速度很慢(从有点小的 7k 行数据库查询时需要将近一分钟),所以我想知道是否有更有效的方法。
SELECT *
FROM [BD$] BD
WHERE (BD.Product='A' or BD.Product='B')
AND BD.ID IN (
SELECT BD.ID
FROM [BD$] BD
WHERE (Product='A' or Product='B')
GROUP BY BD.ID
HAVING SUM(BD.Count)<>0)
【问题讨论】:
-
如果这真的是 T-SQL,我建议使用分区表。