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 = ?;
查询应显示多个结果,但仅显示一个具有特定主题的结果。