php - 如何使用 JOIN 找到一对多关系中的最新行(日期和时间)

标签 php mysql sql

我有两个表:用户(user_id、国家/地区)和消息(time_date、货币、amount_sold、message_user_FK)。这些表是一对多关系,即每个用户可以拥有多条消息。我想找到每个国家的最新消息。我有以下查询,但它不起作用。我做错了什么?

  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

最佳答案

如果您想要具有最新日期时间的国家/地区,请使用简单的查询。 。 。 加入分组依据:

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;

关于php - 如何使用 JOIN 找到一对多关系中的最新行(日期和时间),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29202008/

相关文章:

php - initWithObjects Keys for JSON POST to MySQL via PHP - 在数据库中获取空行

javascript - 胜利发生后SteamBot崩溃

php - 从一个表中获取ID并使用php将其存储到另一个表中

sql - 选择最高薪水

php - Style -CSS 一个 php session 值

php - 删除 http : from img src

php - 如何从表格中计算高度分数

mysql - [问] :Syntax error in creating UDF in mysql

php - codeigniter 将许多图像名称插入数据库

mysql - 在 mysql 中使用 CASE 语句求和