gpt4 book ai didi

sql - 使用 group by 检索主键上的聚合行

转载 作者:行者123 更新时间:2023-12-05 00:07:03 24 4
gpt4 key购买 nike

好的,我知道当您使用 group by 执行 SQL 命令时,您无法在没有聚合的情况下提取特定字段,但是在我看来,如果您正在对保证唯一的主键进行聚合,则应该是一种同时拉动该列的其他行的方法。像这样的东西:

SELECT Max(id), 
foo,
bar
FROM mytable
GROUP BY value1,
value2

因此,ID 保证是唯一的,因此 foo 和 bar 将恰好具有 1 个值,有没有办法生成这样的查询?

我试过这个,但在这种情况下 MyTable 有数百万行,并且运行时间是 Not Acceptable :
SELECT * 
FROM mytable
WHERE id IN (SELECT Max(id)
FROM mytable
GROUP BY value1,
value2)
AND ...

理想情况下,我想要一个至少可以追溯到 SQL Server 2005 的解决方案,但如果在以后的版本中有更好的解决方案,我也希望听到它们。

最佳答案

确保您定义了一个索引,例如:

CREATE NONCLUSTERED INDEX idx_GroupBy ON mytable (value1, value2)
IN如果你有很多行,可能会很慢。转您的 IN 可能会有所帮助成 INNER JOIN .
SELECT
data.*
FROM
mytable data
INNER JOIN
(
SELECT id = MAX(id)
FROM mytable
GROUP BY value1,
value2
) ids
ON data.id = ids.id

不幸的是,Sql Server 没有任何功能可以更好地做到这一点。

关于sql - 使用 group by 检索主键上的聚合行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12937878/

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