php - 使用 GROUP BY 和 ORDER BY 条件在两个 MySQL 表上加入与联合

标签 php mysql database

我正在尝试合并按 threadid 分组并按 last_activity 排序的消息和聊天表。当我尝试使用 UNION 时,我在排序时遇到了问题,所以我假设 join 会做得更好。我在语法方面遇到问题,希望得到一些指导。以下是我正在使用的两个选择。非常感谢任何帮助。

从消息表中选择:

mysql> select threadid, uidto, uidfrom, last_activity, last_message from messages group by threadid order by last_activity DESC;
+----------+-------+---------+---------------------+------------------+
| threadid | uidto | uidfrom | last_activity       | last_message     |
+----------+-------+---------+---------------------+------------------+
|        2 |     2 |       1 | 2013-09-06 22:59:38 | blurred lines... |
|        1 |     9 |       1 | 2013-09-06 22:49:16 | kisses!          |
+----------+-------+---------+---------------------+------------------+
2 rows in set (0.00 sec)

从聊天表中选择:

mysql> select threadid, uidto, uidfrom, last_activity, last_message from chat group by threadid order by last_activity DESC;
+----------+-------+---------+---------------------+--------------+
| threadid | uidto | uidfrom | last_activity       | last_message |
+----------+-------+---------+---------------------+--------------+
|        2 |     2 |       1 | 2013-09-06 23:03:27 | danke        |
|        1 |     1 |       9 | 2013-09-06 22:30:34 | much         |
+----------+-------+---------+---------------------+--------------+
2 rows in set (0.00 sec)

最佳答案

select m.threadid, m.uidto, m.uidfrom, m.last_activity, m.last_message,
c.threadid, c.uidto, c.uidfrom, c.last_activity, c.last_message
FROM messages m
JOIN chat c on m.threadid=c.threadid 
GROUP by threadid ORDER BY last_message


(select m.threadid, m.uidto, m.uidfrom, m.last_activity, m.last_message FROM messages m
UNION ALL
select c.threadid, c.uidto, c.uidfrom, c.last_activity, c.last_message FROM chat c)
GROUP by threadid ORDER BY last_message

关于php - 使用 GROUP BY 和 ORDER BY 条件在两个 MySQL 表上加入与联合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18668179/

相关文章:

php - 访问 PHP 中的特定列

php - 模拟多个接口(interface)

mysql - 具有外键约束的删除顺序,

mysql - 如何修复 `information_schema` .`TABLES` ?

php - 当没有任何用户名时,如何将未知设置为列的值?

php - Codeigniter - 显示与当前 session 的用户 ID 相关的数据库记录

mysql - 这些 mysql 查询中哪个更有效,是否使用左连接

database - 关于超文件数据库的建议

php - 映射相互不一致

php - Mysql - 日期范围内的用户分析