gpt4 book ai didi

mysql - 改进在 mySQL 上运行的 SQL 查询

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

2 个表:

  • 消息:{ id/thread_id }
  • 收件人:{ id/thread_id/last_message_seen_id }

我想检索有未读消息的收件人 ID:“我计算上次看到的消息有多少条消息”

这里的查询(有效,但我确信有更逻辑/简单的东西):

SELECT r.id, (
SELECT COUNT(*)
FROM message m
WHERE m.thread_id = r.thread_id AND m.id > r.last_seen_message_id
) AS messages
FROM recipient r
WHERE (
SELECT COUNT(*)
FROM message m
WHERE m.thread_id = r.thread_id AND m.id > r.last_seen_message_id
) > 0

我认为该模型足够简单,如果您需要更多详细信息,请询问。

最佳答案

这应该有效:

SELECT r.id, Count(m.id) as messages
FROM recipient r
JOIN messages m on m.thread_id = r.thread_id
AND m.id > r.last_seen_message_id
GROUP BY r.id

关于mysql - 改进在 mySQL 上运行的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44008197/

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