【问题标题】:How to wrap around from 10 to 1 in MySQL query?如何在 MySQL 查询中从 10 环绕到 1?
【发布时间】:2021-09-04 00:57:06
【问题描述】:

我总共有 10 名员工,我必须在我的页面上显示接下来的 3 名员工详细信息,我尝试了以下代码。

SELECT * 
  FROM employee
 where empid > 1 
   and is_active = 1 
 order 
    by empid ASC 
 limit 0 , 3

我得到正确的输出 2,3,4。

现在我的问题是,如果 empid 是 10,那么我得到的是空行。当empid为10或empid为8时显示1,2,3是否可以显示9,10,1

我的意思是我希望它从10 to 1 开始。

empid | Name      | Position   | Office   | Age
  1   | Airi      | Accountant | Tokyo    | 33
  2   | Angelica  | Officer    | London   | 47
  3   | Ashton    | Technical  | Francisco| 66
  4   | Bradley   | Software   | London   | 41
  5   | Brenden   | Engineer   | Francisco| 28
  6   | qodjf     | Accountant | Tokyo    | 33
  7   | Angelica  | Officer    | New York | 50
  8   | Ashton    | Technical  | Francisco| 30
  9   | zxysz     | Software   | London   | 50
  10  | Brenden   | Engineer   | Francisco| 28

我试图在db-fiddle 中创建一个表,但我收到了错误消息。我正在使用 PHPMyAdmin。所以我在这里添加了表格。

【问题讨论】:

  • 如果empid是9怎么办?
  • @forpas,那么输出将是 10,1,2
  • @nbk,为什么,任何原因?
  • @nbk,有没有其他方法可以解决这个问题?

标签: mysql sql-order-by sql-limit


【解决方案1】:

ORDER BY 子句中移动条件empid > ? DESC

SELECT * 
FROM employee 
WHERE is_active = 1
ORDER BY empid > ? DESC, empid LIMIT 3

请参阅demo

【讨论】:

  • 让我试试这个。给我时间
  • 它工作得很好,谢谢你的帮助。从我这边投票
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-30
  • 2021-01-22
相关资源
最近更新 更多