我想在收件箱中收到最新的5条消息。 要获得5个最新ID,我需要使用它:
SELECT
MAX(id)
FROM
samtaler
WHERE
brukerid_mottaker = 1
GROUP BY brukerid_avsender
ORDER BY id DESC
LIMIT 5
这会返回我需要的正确ID。但是在同一个查询中我想从同一个表中选择数据,这个行获得了从上面这个查询返回的id。
我尝试了一些事情,变量和自我加入,但没有运气:
select
p2.title,
p2.message,
@a:=max(p1.id)
from
samtaler p1
join samtaler p2
on (@a = p2.id)
where
p2.brukerid_mottaker = 1
group by p2.brukerid_avsender
order by p2.id DESC
limit 5
为什么这不起作用?
这是数据库中的当前数据:http://i47.tinypic.com/2hpsjv9.png 我想在这种情况下返回第13行和第4行。抱歉英语不好。
答案 0 :(得分:1)
加入子查询,而不是简单的自联接。由于IN()
无法在LIMIT
中使用,IN()
子句无效。它应该在加入的子查询中起作用:
SELECT
p1.title,
p1.message,
p2.id
FROM
samtaler p1
JOIN (
SELECT MAX(id) AS id
FROM
samtaler
WHERE
brukerid_mottaker = 1
GROUP BY brukerid_avsender
ORDER BY id DESC
LIMIT 5
) p2 ON p1.id = p2.id
通过这种方法,不需要变量。