[英]How to get max(table1.date1) less than min(table1.date2)
[英]How to select left table, order by max date of the right table and max date is less than or equal to NOW()?
以下是我的數據庫表
left_table
id name
1 A
2 B
3 C
4 D
5 E
right_table
id left_table_id size date_time
1 1 xs 2017-06-13 14:20:00
2 3 s 2017-06-13 14:25:00
3 2 xs 2017-06-13 14:27:00
4 1 s 2017-06-13 14:30:00
5 2 m 2017-06-13 14:32:00
6 2 xs 2017-06-13 14:33:00
7 3 xl 2017-06-13 14:40:00
8 4 s 2017-06-13 14:41:00
9 4 m 2017-06-13 14:45:00
10 5 m 2017-06-13 14:46:00
如何編寫sql查詢以通過max(date_time) DESC
獲取left_table
順序的記錄,其中date_time <= NOW()
作為以下結果。
result left_table order by max(add_time) DESC
id name max(add_time)
2 B 2017-06-13 14:33:00
1 A 2017-06-13 14:30:00
3 C 2017-06-13 14:25:00
這是因為4和5的left_table_id的date_time
是> NOW()。 假設NOW() = 2017-06-13 14::35:00
請注意,left_table_id 3
具有一個add_time > NOW()
但由於它具有其他右記錄add_time <= NOW()
,因此仍處於選擇狀態。
您可以使用如下查詢:
SELECT t.id, t.name, r.date_time
FROM left_table AS t
JOIN (
SELECT id, MAX(date_time) AS date_time
FROM right_table
WHERE date_time <= NOW()
GROUP BY id) AS r ON t.id = r.id
ORDER BY r.date_time DESC;
該查詢使用派生表,該表過濾掉date_time
值超過當前時間戳記的記錄。 它還對記錄進行分組,以獲取每個id
的最新date_time
值。 使用此派生表,我們可以使用其date_time
字段輕松執行所需的排序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.