gpt4 book ai didi

sql - 如何获得具有相同id的结果中mysql的排名

转载 作者:行者123 更新时间:2023-11-29 14:59:01 25 4
gpt4 key购买 nike

简单的问题,我有一个消息表,每个消息都有时间戳、reply_id 和 topic_id。 Reply_ids 可以与其他消息相同,这意味着这些消息位于同一组回复中。当我选择带有最小时间戳的reply_id时,这意味着它是该组的第一条消息,我还想知道它在该topic_id的所有结果中的编号位置,例如。第三(3)第四(4)等有人知道如何做到这一点或有任何建议吗?这可以用纯sql来完成吗?

SELECT reply_id,min(timestamp) as min FROM messages
WHERE reply_chunk_id = ?
AND topic_id = ?

最佳答案

使用纯 SQL:

SELECT m.reply_id,
MIN(m.timestamp) as min,
(SELECT COUNT(*)
FROM MESSAGES t
WHERE t.id <= m.id) AS rank
FROM MESSAGES m
WHERE m.reply_chunk_id = ?
AND m.topic_id = ?

仅当 replyid 是唯一值时才有效。如果 replyid 之前有重复的 replyid,则 COUNT 将错过该内容。

MySQL 不支持的分析函数将是更好的选择。您可以使用 MySQL SELECT 语句中的变量重新创建功能。

关于sql - 如何获得具有相同id的结果中mysql的排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3795245/

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