desc的顺序没有以正确的顺序显示

  • 本文关键字:顺序 显示 desc mysql
  • 更新时间 :
  • 英文 :


我有一个聊天服务,所以:

select k.user, c.id, c.from, c.sent, c.message, c.recd from chat c
inner join cadastro k on c.from=k.id
where (`from`=? and `to`=?)
order by c.id
limit 50

我想显示最后50条消息,如果我发送1到100条,它将显示:

1
2
3
...
49
50

我想显示最后50条消息,如下所示:

50
51
...
100

如果我放order by c.id desc,它会给我订单:

50
49
...
4
3
2
1

有什么想法吗?

select * from
(
  select k.user, c.id, c.from, c.sent, c.message, c.recd from chat c
  inner join cadastro k on c.from=k.id
  where (`from`=? and `to`=?)
  order by c.id desc
  limit 50
) tmp
order by id asc

我不确定这是最有效的方法,但你可以尝试:

SELECT A.user, A.id, A.from, A.sent, A.message, A.recd
FROM (
   select TOP 50 k.user, c.id, c.from, c.sent, c.message, c.recd from chat c
   inner join cadastro k on c.from=k.id
   where (`from`=? and `to`=?)
   order by c.id DESC
) AS A
ORDER BY c.id ASC