gpt4 book ai didi

MySQL:将出现的行数与结果一起连接

转载 作者:行者123 更新时间:2023-11-29 08:28:42 24 4
gpt4 key购买 nike

我正在尝试为我的应用程序构建一个简单的私有(private)消息传递系统。我设置每条消息的方式都有一个与之关联的thread_hash。相互关联的消息具有相同的 thread_hash(回复其他消息的消息都具有相同的 thread_hash)

我能够运行一个查询,从每个组(thread_hash's)中选择最后输入的行。 我想要完成的是返回另一列,其中包含具有特定 thread_hash 的行数,而无需进行单独的查询

我已经使用用于生成行的查询创建了一个 SQL Fiddle:http://sqlfiddle.com/#!2/1d8bd/4

我拥有的唯一信息是用户的 ID。我没有 thread_hash,因此必须从 ID 生成。我尝试过使用一些查询来生成行数,但我的大脑此时无法正常工作。

最佳答案

您可以这样编写查询:

SELECT
thread_hash,
from_user_id,
mark_read,
subject,
SUBSTRING(message, 1, 65) as message,
messages.time_stamp,
cnt
FROM
`messages`
JOIN (SELECT MAX(messages.id) thead_id, COUNT(*) cnt
FROM messages
WHERE messages.to_user_id = 28
GROUP BY thread_hash) thread_head
ON `messages`.`id` = `thread_head`.`thead_id`
WHERE `to_user_id` = '28'
ORDER BY `messages`.`time_stamp` ASC
LIMIT 20

fiddle 是 here .

但是我不确定你是否需要只统计用户28的消息,或者所有消息。如果您需要计算所有消息的数量,您可以这样重写子查询:

(SELECT MAX(CASE WHEN messages.to_user_id = 28 THEN messages.id END) thead_id,
COUNT(*) cnt
FROM messages
GROUP BY thread_hash) thread_head

请参阅 fiddle here .

关于MySQL:将出现的行数与结果一起连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17258328/

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