我目前遇到以下问题:我有两个表:
人 - uid - 名 - 姓 邮件 - uid(自动增量) - to_person -> 与 person.uid 的 1:1 关系 - from_person -> 与 person.uid 的 1:1 关系
如何获取 uid=1 的人的所有邮件,按 mail.uid DESC 排序并按 person.uid 分组?我试过以下:
SELECT a.first_name,a.last_name,b.uid
FROM person as a, mail as b
WHERE
(b.to_user=a.uid OR b.from_user=a.uid) AND
(b.to_user=1 OR b.from_user=1) AND
a.uid!=1
GROUP BY a.uid
ORDER BY b.uid DESC
它确实给了我确切的人数,但订购最新邮件不起作用。
任何人都可以给我一个想法如何解决这个问题?
谢谢,多米尼克
编辑:
如果有人有同样的问题,我的解决方案在这里有效:
SELECT a.uid,a.first_name, a.last_name, b.max, c.tstamp, c.to_user, c.from_user
FROM person a
INNER JOIN
(SELECT MAX(uid) max, to_user,from_user, IF(to_user=13,from_user,to_user) AS other_user, tstamp
FROM mail
WHERE (to_user=13 OR from_user=13) AND deleted=0 AND hidden=0
GROUP BY GREATEST(to_user,from_user), LEAST(to_user,from_user)
ORDER BY max DESC) AS b ON b.other_user=a.uid
INNER JOIN
tx_intranet_domain_model_mailentry as c ON c.uid=b.max
WHERE a.deleted=0 AND a.disable=0