【问题标题】:Selecting last record from INNER JOIN and grouping从 INNER JOIN 中选择最后一条记录并分组
【发布时间】:2016-02-14 07:20:27
【问题描述】:

好的,所以我有一个查询,该查询从每个用户中选择 1 条消息,按日期 DESC 排序,但为每个组选择第一条消息。我需要按日期从每个组(每个用户)中选择最后一条消息 这是我的查询:

SELECT     people.id, 
           people.avatar, 
           people.firstname, 
           people.lastname, 
           LEFT(messages.message, 90) AS message, 
           messages.seen, 
           messages.date 
FROM       people 
INNER JOIN messages 
ON         people.id = messages.sender_id 
WHERE      reciever_id = '". $user_data['id'] ."' 
GROUP BY   sender_id 
ORDER BY   date DESC limit 11

【问题讨论】:

  • 该查询未按日期分组。它按 sender_id 分组。它不显示每个组的第一条消息。它按日期降序显示所有消息。
  • 错字对不起,我改正了

标签: php mysql sql mysqli


【解决方案1】:

如果我的语法有点不对,请原谅,但我可能会尝试这样的事情。

SELECT people.id, 
       people.avatar, 
       people.firstname, 
       people.lastname, 
       LEFT(msg.message, 90) AS message, 
       msg.seen, 
       msg.date 
FROM  people 
INNER JOIN (SELECT message, seen, date, sender_id
                FROM messages GROUP By sender_id 
                ORDER By date DESC LIMIT 1) msg
                ON people.id = msg.sender_id
WHERE      reciever_id = '". $user_data['id'] ."' 

【讨论】:

  • 我得到了 #1054 - “字段列表”中的未知列
  • 您是否在没有 where 子句的情况下直接针对数据库进行测试?
  • 不,“WHERE”在查询中
猜你喜欢
  • 2021-12-26
  • 2015-07-24
  • 2019-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-05
相关资源
最近更新 更多