[英]MySQL joined query with max dates from two tables
我有兩個包含日期和時間戳的表,並嘗試在最近的日期中提取記錄。
表1(會議):
id---login_date------------ip
01---2014-01-02 23:58:40---127.0.0.1
03---2014-01-01 13:20:16---127.0.0.1
01---2014-01-01 17:06:15---127.0.0.1
02---2013-12-30 14:34:39---127.0.0.1
*還有多個其他非日期列,這些列不參與此解決方案
表2(提醒):
id---last_reminder---------next_reminder
03---2013-12-29 22:50:18---2014-01-07 22:50:18
02---2014-01-01 15:15:15---2014-01-09 15:15:15
02---2013-11-16 08:54:23---2013-11-23 08:54:23
現在,這是我從第一個表中獲取每個用戶ID的所有最新登錄的方式:
SELECT a.id, a.login_date
FROM sessions a
WHERE a.login_date = (
SELECT max(login_date) as login_date
FROM sessions
WHERE id = a.id
LIMIT 1
)
GROUP BY a.id
我想得到的不僅是每個用戶ID的最后登錄日期,還有最后發送的提醒(如果有的話)。 由於這涉及選擇兩個最大日期,我從來沒有得到正確的結果
期望的結果:
id---login_date------------last_reminder---------next_reminder------
01---2014-01-02 23:58:40---NULL------------------NULL---------------
02---2013-12-30 14:34:39---2014-01-01 15:15:15---2014-01-09 15:15:15
03---2014-01-01 13:20:16---2013-12-29 22:50:18---2014-01-07 22:50:18
有人請幫我解決這個問題。
謝謝,西蒙
//////////////////////// 2014-01-04更新了附加專欄///////////////// ///////////
根據請求,上面的表結構已更新為包含生成正確查詢結果所需的額外字段。
*請注意,next_reminder字段將始終具有一個值,因為它是根據最后一個提醒值計算的。 查詢最終將檢查下一個提醒是否也在特定時間范圍內。
PS StackOverflow只有一個表包含日期和時間戳(我已經構建了我迄今為止所擁有的內容),但是我無法找到任何類似的示例,這些示例涉及連接兩個表並選擇最大日期從每個。
如果每個表只有兩列,則可以直接連接它並使用MAX()
獲取每個ID
的最新記錄。
SELECT a.id,
MAX(login_date) latest_login_date,
MAX(last_reminder) latest_reminder
FROM sessions a
LEFT JOIN reminders b
ON a.id = b.id
GROUP BY a.id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.