gpt4 book ai didi

SQL:在另一个表中按列 desc 排序

转载 作者:行者123 更新时间:2023-12-03 19:50:34 27 4
gpt4 key购买 nike

我有这个 SQL(SQLite 数据库),它正确地从按 session ID 分组的消息表中获取最新消息,其中消息的 session ID 不是“无”。

SELECT * from messages 
WHERE _id
IN (
SELECT MAX(_id)
FROM messages
WHERE conversation_id != 'none'
GROUP BY conversation_id
)

但是,我想使用对话表中的“unseenreplies”列(其中包含此对话的未见回复的数量)来对发出的消息进行排序。

我试过这个:
SELECT * from messages
WHERE _id IN
(
SELECT max(_id) from messages m
JOIN conversations c
ON m.conversation_id = c.cid ORDER BY
c.unseenreplies DESC
where m.conversation_id != 'none' group by m.conversation_id )

但是在“where”子句附近出现语法错误。

只是作为解释,“对话 ID”不是对话表的主键,而是一个标识符字符串。

我怎样才能解决这个问题?我的 JOIN 方法是否可行?

最佳答案

JOIN它们而不是 IN谓词:

SELECT * 
from messages AS m1
INNER JOIN conversations c1 ON m1.conversation_id = c1.cid
INNER JOIN
(
SELECT max(_id) AS MAxId
from messages m
where m.conversation_id != 'none'
GROUP BY m.conversation_id
) AS m2 ON m1._id = m2.MaxId
ORDER BY c.unseenreplies DESC

关于SQL:在另一个表中按列 desc 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16634220/

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