MySQL Field()排序

-3 mysql sql

我想排序列值出现在我的页面中,首先它会查找活动,然后挂起,然后卖出,然后即将推出.但它显示不然.这是我的代码

SELECT 
    * 
FROM custom 
ORDER BY 
    FIELD(status,'Active','Pending','Sold','Upcoming') DESC
Run Code Online (Sandbox Code Playgroud)

Aar*_*and 6

虽然ORDER BY Status理论上确实应该有效,但鉴于目前您所需的排序恰好按字母顺序排列,并且暂时忽略了"它不起作用"意味着什么,更可扩展的方式是使用CASE表达式.

ORDER BY CASE Status
  WHEN 'Active'   THEN 0
  WHEN 'Pending'  THEN 1
  WHEN 'Sold'     THEN 2
  WHEN 'Upcoming' THEN 3
END DESC;
Run Code Online (Sandbox Code Playgroud)

更具前瞻性的解决方案是具有ID,名称和序列的状态表.您在查询中加入该表,并按顺序排序.然后,如果您稍后决定以不同的顺序请求数据,则可以更改序列,并且稍后可以轻松添加更多状态类型,而无需触摸查询.此外,它允许您存储id而不是字符串,让您在相同数量的空间中存储更多数据.

  • RESPEK!关于mysql问题的好工作 (3认同)
  • 金[tag:mysql]徽章很快就会出现! (3认同)