簡體   English   中英

如何使用JOIN在1對多關系中找到最新行(日期和時間)

[英]How can I find latest row (date and time) in 1 to many relation using JOIN

我有兩個表:users( user_id ,國家/地區)和message( time_date ,貨幣,amount_sold, message_user_FK )。 這些表的關系為1:1,即每個用戶可以有多個消息。 我想找到每個國家的最新消息。 我有以下查詢,但不起作用。 我究竟做錯了什么?

  SELECT u.country, s.date_time 
  FROM users u 
  JOIN message s ON u.user_id = s.message_user_FK
  JOIN(
  SELECT message_user_FK ,MAX(date_time) date_time 
  FROM message 
  GROUP BY message_user_FK 
  ) s1
  ON(s.message_user_FK = s1.message_user_FK  AND s.date_time =   s1.date_time );

http://sqlfiddle.com/#!9/03858/20

如果您希望國家/地區具有最新的日期時間,請使用簡單的查詢。 joingroup by

SELECT u.country, MAX(s.date_time)
FROM users u JOIN
     message m
     ON u.user_id = m.message_user_FK
GROUP BY u.country;

這怎么了

SELECT u.country ,MAX(m.date_time) date_time 
FROM users u
     JOIN message m on u.user_id = m.message_user_FK
GROUP BY u.country

您的子查詢已關閉-您只是按錯誤的字段進行分組。 這樣做也一樣。


暫無
暫無

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

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