【问题标题】:Select specified items from rows at first priority mySql从优先级mySql的行中选择指定项目
【发布时间】:2014-12-18 19:30:18
【问题描述】:

我有一张桌子users

id | Name |
1    John 
2    Dwayne
3    Daniel
4    Ronaldo
5    Messi
6    Gareth
7    Leonardo
8    Brad

如果我有(7,5,1,3) 的ID 并且我想选择limit 6,那么预期的输出应该如下:-

id  Name 
7 | Leonardo
5 | Messi
1 | John 
3 | Daniel
2 | Dwayne
4 | Ronaldo

我之前做的是这样,但没有得到预期的输出。救命!!

"select * from users ORDER BY FIELD(user_id,7,5,1,3) LIMIT 6"

【问题讨论】:

  • 你用什么来创建7,5,1,3的订单?

标签: mysql sql select sql-order-by


【解决方案1】:

您的查询已结束。它只是没有考虑到所有 other 用户 ID。试试这个:

ORDER BY FIELD(user_id,7,5,1,3) > 0 desc,
         FIELD(user_id,7,5,1,3)
LIMIT 6;

您的版本的问题是field() 在没有匹配项时返回0。并且0s 将被优先订购。

【讨论】:

  • 哇,它的工作原理谢谢但是你能解释一下那里发生了什么@gordon
  • 我以为我做到了。当您只使用field() 时,该函数会为不匹配的行返回 0 - 这些将按升序排列。
猜你喜欢
  • 1970-01-01
  • 2017-05-01
  • 2021-09-16
  • 2012-02-24
  • 2010-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多