初学者,所以请放轻松我:)
所以我的数据库中有这两个表
+------------------------------------------------+
| message_id | client_id | message | date_posted |
+------------------------------------------------+
+------------------------------------------------+
| message_id | client_id | message | date_posted |
+------------------------------------------------+
他们提供我正在测试的消息传递应用程序,但现在我不知道如何查询这些表,以便从两个表中按日期排序所有聊天。例如
客户14(2小时前):你好//来自请求表
Admin(1小时前):欢迎//来自回复表
所以消息首先显示为最早的...
我尝试在 JOIN
上使用clien_id
,因为这就是我想要的。但是,它似乎无法发挥作用。
我也尝试从包含UNION ALL
的子查询中进行选择,也没有运气......有关如何做到这一点的任何想法?提前谢谢!
答案 0 :(得分:1)
select a.message
from table1 a
inner join
table2 b
on a.client_id=b.client_id
order by a.date_posted desc;
答案 1 :(得分:1)
您正在寻找union
。在您的情况下,join
会将两个表中的列组合成一行,您可以将多个表中的union
行组合到一个结果集中。
您需要单独附上select语句,然后添加order子句。
编辑:根据OP的评论更新此答案以包含源表的列
(select source='reply_table', * from reply_table)
union
(select source='request_table', * from request_table)
order by date_posted desc
MySQL的文档相当不错,其工会页面概述了几种排序方案:https://dev.mysql.com/doc/refman/5.7/en/union.html
但是针对您案件的具体说明是:
要使用ORDER BY或LIMIT子句对整个UNION结果进行排序或限制,请为各个SELECT语句加上括号,并将ORDER BY或LIMIT置于最后一个之后。