在mysql中查找下一行/上一行时出现问题

时间:2010-06-20 10:17:27

标签: mysql unique max

SELECT id ,MAX(status) AS status FROM Mail WHERE 
     status < (SELECT status FROM Mail WHERE id = 1000) 
     GROUP BY status ORDER BY status DESC LIMIT 1;

我正在使用此查询来查找当前行1000的上一行。如果我使用的是非唯一的状态列,我将获得NULL值。如果我使用唯一列,它会给出正确的值。

1 个答案:

答案 0 :(得分:0)

试试这个:

SELECT m1.id, MAX(m1.status) AS 'status' FROM Mail m1, Mail m2
WHERE m1.status < m2.status AND m2.id = 1000
GROUP BY m1.status ORDER BY m1.status DESC LIMIT 1;