我有一个 PHP 脚本,它从数据库中检索消息,然后以收件箱样式的方式显示它们,每条消息一行。每条消息都是 2 个用户之间对话的一部分。现在,问题是它在输出中为对话中的每条消息返回 1 条新消息。
如果这有意义吗?这是查询的代码:
$sql_select_messages = $db->query( ... );
其中参数是以下查询字符串:
SELECT m.admin_message, a.name, u.username AS sender_username,
m.* FROM " . DB_PREFIX . "messaging m
LEFT JOIN " . DB_PREFIX . "items a ON a.items_id=m.items_id
LEFT JOIN " . DB_PREFIX . "users u ON u.user_id=m.sender_id
WHERE m.receiver_id='" . $session->value('user_id') . "' AND m.receiver_deleted=0" .
(($page == 'summary') ? " AND m.is_read=0" : '') . "
ORDER BY " . $order_field . " " . $order_type . " LIMIT " . $start . ", " . $limit
部分:
m.* FROM " . DB_PREFIX . "messaging m
从包含类似列的 mySQL 行中选择数据
topic_id
和
message_id
我想要做的是让上面的 mySQL 查询只返回每个 topic_id 的一 (1) 个结果(因为可能有几个 topic_id 具有相同的数字),并且只结合 message_id 的最新(最高数字)。
所以基本上如果有:
================
topic_id | message_id
================
15 10
15 11
15 12
19 02
19 03
19 04
我只希望 mySQL 返回 15/12 和 19/04。我将如何使用上面的 mySQL 选择查询来做到这一点?
非常感谢 :)