簡體   English   中英

MySQL從按日期排序的兩個表中選擇

[英]MySQL Selecting from two tables ordered by date

初學者在這里,所以請放輕松我:)

所以我的數據庫中有這兩個表

回復表

+------------------------------------------------+
| message_id | client_id | message | date_posted |
+------------------------------------------------+

請求表(完全相同)

+------------------------------------------------+
| message_id | client_id | message | date_posted |
+------------------------------------------------+

問題:

它們提供了我正在測試的消息傳遞應用程序,但現在我不知道如何查詢這些表以按日期從兩個表中獲取所有聊天記錄。 例如

客戶端14(2小時前):您好,//來自請求表
管理員(1小時前):歡迎//來自回復表

因此消息首先顯示最早的...

我嘗試在clien_id上使用JOIN ,因為這是我想要的。 但是,它似乎不起作用。

我也嘗試過從包含UNION ALL的子查詢中選擇,也沒有運氣。如何做到這一點的任何想法? 提前致謝!

select a.message
from table1 a
inner join
table2 b 
on a.client_id=b.client_id 
order by a.date_posted desc;

union是您想要的。 在你的情況下, join將來自這兩個表列組合成單排,因為你正在尋找的地方union從多個表中的行成一個結果集。

您將希望單獨封裝選擇語句,然后添加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放在最后一個語句之后。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM