【问题标题】:Reverse search query - search from high to low反向搜索查询 - 从高到低搜索
【发布时间】:2021-03-19 05:14:18
【问题描述】:
我想获取给定参数的消息:
select *
from chat.messages
where senderId = 1
and receiverId = 0
or senderId = 0
and receiverId = 1
order
by id ASC
LIMIT 0,10
我想反转它并从最高 id 开始搜索,而不是从最低 id 开始搜索。
【问题讨论】:
标签:
mysql
sql
sql-order-by
where-clause
sql-limit
【解决方案1】:
你只是想要一个降序排序吗?
select *
from chat.messages
where (senderid = 1 and receiverid = 0)
or (senderid = 0 and receiverid = 1)
order by id desc limit 0,10
请注意,我还在您的where 子句中修复了一个逻辑缺陷问题:and 的优先级高于or,因此or 条件需要用括号括起来。否则,您的 where 子句相当于:
where senderid = 1 and (receiverid = 0 or senderid = 0) and receiverid = 1
...这显然不是你想要的。
【解决方案2】:
使用 DESC 排序
select * from chat.messages where senderId = 1 and receiverId = 0 or senderId = 0 and receiverId = 1 order by id DESC LIMIT 0,10