Php 外部id的不同左连接

Php 外部id的不同左连接,php,mysql,sql,cakephp,Php,Mysql,Sql,Cakephp,我需要从每个“用户”那里找到最新的“消息”,并列出它们(比如iPhone的收件箱中的对话等) “我的消息”表中的字段包括: id | to | from | body |时间戳 to=当前用户ID from=发件人用户id 在“发件人”字段唯一的情况下,如何构造一个查询来获取每个不同用户的最新帖子?显然,第一个条件是“to”字段与当前用户ID匹配 来自不同用户的每条消息也应将用户详细信息加入结果中 另外,如果您能够演示如何在CakePHP中工作,那将是非常棒的。。!如果不是,则只使用SQL即可:

我需要从每个“用户”那里找到最新的“消息”,并列出它们(比如iPhone的收件箱中的对话等)

“我的消息”表中的字段包括:

id | to | from | body |时间戳

to=当前用户ID

from=发件人用户id

在“发件人”字段唯一的情况下,如何构造一个查询来获取每个不同用户的最新帖子?显然,第一个条件是“to”字段与当前用户ID匹配

来自不同用户的每条消息也应将用户详细信息加入结果中


另外,如果您能够演示如何在CakePHP中工作,那将是非常棒的。。!如果不是,则只使用SQL即可:)

您可以将SQL与子查询一起使用,如:

SELECT
  messages.*,
  max_stamps.max_stamp
FROM
  (SELECT 
    MAX(timestamp) as max_stamp, 
    `from` 
   FROM 
     messages 
   WHERE
     messages.`to`=$currentUser
   GROUP BY 
    `from`
  ) as max_stamps
  LEFT JOIN
    messages
    ON messages.`from`=max_stamps.`from` 
       AND max_stamps.max_stamp=messages.timestamp
-i、 首先在子查询中选择最大时间戳,然后将其用于主表

(更新)如果要获取最大
id
值,请在
MAX()
中使用它:


编辑:误解了
id
的含义。提示:使用MySQL保留字命名表/列可能会带来麻烦(至少您必须用反勾号括起来).

你的意思是你想把最新的消息列表发送给当前用户或由当前用户发送给当前用户-所以它是当前用户的收件箱:)
和message.timestamp=max\u timestamp.max\u stamp
?我不太明白你在这里放了什么-我不需要按时间戳订购,因为ID更适合订购和发送此外,用户表没有连接到查询..@MatBailie-是,因为可以有多个条目。感谢you@Tim-这将在
字段中为相应的
$currentUser
字段选择每个用户的最大时间戳,然后连接该字段的主表数据。不是吗?我需要类似“从唯一用户(from)获取最新消息(按ID)where TO=当前用户ID”
SELECT
  messages.*,
  max_ids.max_id
FROM
  (SELECT 
    MAX(id) as max_id,
    `from` 
   FROM 
     messages 
   WHERE
     messages.`to`=$currentUser
   GROUP BY 
    `from`
  ) as max_ids
  LEFT JOIN
    messages
    ON messages.`from`=max_ids.`from`