【问题标题】: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
    

    【讨论】:

      猜你喜欢
      • 2021-08-11
      • 1970-01-01
      • 1970-01-01
      • 2018-10-21
      • 2015-06-09
      • 1970-01-01
      • 1970-01-01
      • 2016-03-27
      • 2014-06-08
      相关资源
      最近更新 更多