作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有以下表格:
users:
user_id
user_name
message:
message_id
thread_id
to_id
from_id
title
message_text
message_date
status
我运行的查询的预期结果是列出来自最近线程的最新消息的 title
以及 thread_id
和 username
并按 date
降序对结果进行排序。我很可能一次只列出大约 10 到 20 个结果。
到目前为止,我提出的 SQL 查询似乎是这样做的,但我觉得我把它复杂化了,可能有更优化的方式来编写我的查询。
SELECT personal_messages.message_id,
personal_messages.thread_id,
personal_messages.body,
users.username
FROM users, personal_messages
WHERE message_id IN
(SELECT MAX(message_id) from personal_messages GROUP BY thread_id)
AND users.id IN
(SELECT users.id FROM users WHERE users.id = personal_messages.from_id)
ORDER BY personal_messages.message_date DESC
此外,如果有人知道如何获取具有相同 thread_id
的所有消息的 count
,那就太棒了!
如有任何提示,我们将不胜感激!
最佳答案
其中一个子选择可能是不必要的
SELECT personal_messages.message_id, personal_messages.thread_id, personal_messages.body, users.username
FROM users INNER JOIN personal_messages ON (users.id = personal_messages.from_id)
WHERE message_id IN (SELECT MAX(message_id) from personal_messages GROUP BY thread_id)
ORDER BY personal_messages.message_date DESC
编辑:此外,如果有人知道一种方法来计算具有相同 thread_id 的所有消息的数量,那就太棒了!
SELECT MAX(message_id), COUNT(message_id) FROM personal_messages GROUP BY thread_id
关于mysql - 我是否在我的 SQL 语句中运行了太多子查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6442453/
对于以下多子脚本: multi sub Screen_get_valid_string($prompt, $accept_empty_string, $max_length = 999) { retu
我正在开发 open-source, cross-platform具有统计支持的番茄计时器。 对于任务,我有一个像这样的树数据结构: class Task { String name;
我是一名优秀的程序员,十分优秀!