Mysql 查询:检查上一行的值

Mysql 查询:检查上一行的值,mysql,Mysql,我有这样的疑问 SELECT * FROM `message` WHERE sender = 10 ORDER BY `message`.`date` AND `message`.`topic` ASC 此查询显示每个消息。 我只想选择具有最早日期的特定主题的第一行 有没有办法通过sql方式解决这个问题?如果您只想显示最早的日期,而此行中没有其他信息,可以非常简洁地完成: SELECT topic, MIN(date) FROM message WHERE s

我有这样的疑问

   SELECT * FROM `message` WHERE sender = 10
    ORDER BY `message`.`date` AND `message`.`topic` ASC 
此查询显示每个消息。 我只想选择具有最早日期的特定主题的第一行


有没有办法通过sql方式解决这个问题?

如果您只想显示最早的日期,而此行中没有其他信息,可以非常简洁地完成:

   SELECT topic, MIN(date)
   FROM message
   WHERE sender = ?
   GROUP BY topic;
如果您想显示整行,它会更详细一点。本例假设(发件人、主题、日期)是唯一的,如果不是,您需要做一些额外的工作来消除重复项

WITH minDate AS
(
     SELECT sender, topic, MIN(date) AS date
     FROM message
     GROUP BY sender, topic;
)
SELECT m.*
FROM message m
JOIN minDate d ON m.topic = d.topic AND m.date = d.date AND d.sender = m.sender
WHERE sender = ?;

查询应显示多个结果,但仅显示一个具有特定主题的结果。