按三列排序

时间:2018-12-03 15:07:45

标签: mysql sql mysqli

我有3列的数据库。 Name, Stock, Backorders 我应该使用什么查询来获得像这样的行:

所有行应按字母顺序排序,但第一行应包含具有stock > 1的产品,第二行应具有stock = 0但具有backorders = 1的产品,最后是具有库存和backorders = 0

1 个答案:

答案 0 :(得分:0)

将英语翻译为SQL,查询顺序应包括:

ORDER BY
  CASE 
    WHEN stock > 1 THEN 0
    WHEN stock = 0 AND backorders > 1 THEN 1
    ELSE 2
  END

如果您希望按字母顺序将其分类为子集,请在END后面放置另一个子句(使用逗号分隔它们),例如:

ORDER BY
  CASE 
    WHEN stock > 1 THEN 0
    WHEN stock = 0 AND backorders > 1 THEN 1
    ELSE 2
  END,
  productname

事物将首先按照您给出的数字规则进行排序,然后按照产品名称进行排序(将其更改为您希望按字母顺序对名称进行排序的任何列)

库存或缺货订单可以小于0吗?找出它们应该适合的排序顺序。.目前,ELSE捕获了其他所有内容。可以更改