gpt4 book ai didi

sql-server - SQL Server 2000 : How to get top 10 for each distinct field. 可能是循环?

转载 作者:行者123 更新时间:2023-12-01 04:27:50 25 4
gpt4 key购买 nike

我有下表

MyTable
ID
MessageType
MessageDate
MessageBody

该表有几百万行,但其中只有 100 个唯一的 MessageType。

我需要的是每个 MessageType 的示例(必须至少包括 MessageType 和 MessageBody),但我不能执行 DISTINCT,因为它只会让我获得 MessageType 列。

我在想类似的东西

SELECT TOP 5 *
FROM MyTable
WHERE MessageType IN (SELECT DISTINCT MessageType FROM MyTable)

我知道这行不通,因为它只是我的前 5 名,但我不确定如何让 SQL 循环通过它。

感谢您的帮助

最佳答案

Row_Number 版本

;WITH cte AS
(
SELECT ID,
MessageType,
MessageDate,
MessageBody,
ROW_NUMBER() OVER (PARTITION BY MessageType ORDER BY (SELECT 0)) AS RN
FROM MyTable
)
SELECT ID,
MessageType,
MessageDate,
MessageBody
FROM cte
WHERE RN <=5

CROSS APPLY 版本

WITH m1 AS
(
SELECT DISTINCT MessageType
FROM MyTable
)

SELECT m2.*
FROM m1
CROSS APPLY
(
SELECT TOP 5 *
FROM MyTable m2
WHERE m2.MessageType = m1.MessageType
) m2

关于sql-server - SQL Server 2000 : How to get top 10 for each distinct field. 可能是循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4596290/

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