gpt4 book ai didi

sql - 这两个查询是否相同 - GROUP BY 与 DISTINCT?

转载 作者:行者123 更新时间:2023-12-02 08:02:22 27 4
gpt4 key购买 nike

这两个查询似乎返回相同的结果。这是巧合还是它们真的一样?

1.

SELECT t.ItemNumber,
(SELECT TOP 1 ItemDescription
FROM Transactions
WHERE ItemNumber = t.ItemNumber
ORDER BY DateCreated DESC) AS ItemDescription
FROM Transactions t
GROUP BY t.ItemNumber

2.

SELECT DISTINCT(t.ItemNumber),
(SELECT TOP 1 ItemDescription
FROM Transactions
WHERE ItemNumber = t.ItemNumber
ORDER BY DateCreated DESC) AS ItemDescription
FROM Transactions t

一点解释:我正在尝试从充满交易的表中获取不同的项目列表。对于每个项目,我都会查找 ItemNumber(标识字段)和最新的 ItemDescription。

最佳答案

你的例子 #2 让我摸不着头脑 - 我心想:“你不能区分单个列,那意味着什么?” - 直到我意识到发生了什么。

当你有

SELECT DISTINCT(t.ItemNumber)

尽管表面上看起来,您实际上并没有要求t.ItemNumber的不同值!!您的示例 #2 实际上的解析方式与

SELECT DISTINCT
(t.ItemNumber)
,
(SELECT TOP 1 ItemDescription
FROM Transactions
WHERE ItemNumber = t.ItemNumber
ORDER BY DateCreated DESC) AS ItemDescription
FROM Transactions t

t.ItemNumber 周围使用语法正确但多余的括号。 DISTINCT 适用于整个结果集。

在这种情况下,由于您的 GROUP BY 按实际变化的列进行分组,因此您会得到相同的结果。实际上,我有点惊讶的是 SQL Server 没有(在 GROUP BY 示例中)坚持在 GROUP BY 列表中提及子查询列。

关于sql - 这两个查询是否相同 - GROUP BY 与 DISTINCT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3354290/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com