在MySQL中有没有办法为返回的行的开头和结尾选择一个订单?

时间:2010-08-10 02:56:57

标签: sql mysql sql-order-by

看看这个简单的查询

SELECT id FROM users

现在,假设我希望用户id订购4,5,7,8,那么我不关心中间,最后我想要最后一个那些是55,56,58。

因此返回的行将是这样的(\ n新行)

4  // explicitly chose these as the start rows
5  // " "
7  // " "
8  // " "
44 // these just come in any order (order not important)
23 // " "
10 // " "
55 // explicitly chose these as the end rows
56 // " "
58 // " "

如何修改上面的查询来执行此操作?感谢

2 个答案:

答案 0 :(得分:1)

使用:

  SELECT u.id
    FROM USERS u
ORDER BY CASE id
           WHEN 4 THEN 1
           WHEN 5 THEN 2
           WHEN 7 THEN 3
           WHEN 8 THEN 4
           WHEN 55 THEN 100000
           WHEN 56 THEN 100001
           WHEN 58 THEN 100002
           ELSE id
         END ASC

将值设置在实际值之外,以便在最后按顺序获得55/56/58。

答案 1 :(得分:0)

最好在表格中引入订单字段,而不是使用黑客或硬编码的任何内容。