我想要从一个包含多封电子邮件的表格中选择一组行,并按发送者进行分组。我的查询语句如下:
SELECT
`timestamp`, `fromEmail`, `subject`
FROM `incomingEmails`
GROUP BY LOWER(`fromEmail`)
ORDER BY `timestamp` DESC
这个查询几乎符合我的需求 - 它选择按电子邮件分组的记录。问题是主题和时间戳不对应于特定电子邮件地址的最新记录。
例如,它可能返回:
fromEmail: john@example.com, subject: hello
fromEmail: mark@example.com, subject: welcome
当数据库中的记录为:
fromEmail: john@example.com, subject: hello
fromEmail: john@example.com, subject: programming question
fromEmail: mark@example.com, subject: welcome
如果“编程问题”主题是最近的,我如何在分组电子邮件时让MySQL选择该记录?
SET SESSION sql_mode = '';
。演示:https://www.db-fiddle.com/f/esww483qFQXbXzJmkHZ8VT/3 - mikepORDER BY
将被丢弃,从嵌套查询中选择的行是随机的。有时可能会起作用,但这将导致一个噩梦般的bug。正确答案在这里:https://dev59.com/uHNA5IYBdhLWcg3wKai3#35456144 - Cârnăciov