mysql:如何在包含混合数据的记录中按字符串排序?

时间:2019-03-27 23:25:21

标签: mysql

这是sql小提琴: http://sqlfiddle.com/#!9/1b9206/2。我需要按顺序排列和获取这些记录,以便按此顺序显示starter, pro5, pro9, pro14, pro18, pro24, pro31, pro46, pro62, MaxPro.如何使用mysql或PHP来实现此顺序? 在PHP中,我将以下查询的结果作为数组发送:

SELECT id, CONCAT(name, ' - ', detail) AS name, price FROM am_membership_packages WHERE package = 'monthly' ORDER BY id ASC

我尝试了不同的技巧,从小提琴中可以看出来,但没有任何效果。

3 个答案:

答案 0 :(得分:2)

如果您按价格升序订购,它将为您提供所需的订单。

ORDER BY price ASC;

答案 1 :(得分:1)

一种方法是将名为display_index的列添加到am_membership_packages表中,然后在查询中执行ORDER BY display_index

填充{{ 1}}列,跳过数字可能很有用。例如,如果首先出现display_index 1,则在id中输入10。如果将来输入的新会员资格套餐需要在display_index为1的会员资格套餐之前出现,则可以将新套餐的id输入为5,并且在{中不需要重新编号{1}}用于其他数据行。

答案 2 :(得分:1)

这些名称没有内在的含义,您可以按要求的方式对其进行排序。我建议简单地添加另一列(例如)DisplayOrder,它是一个整数。

设置值,使其在您ORDER BY DisplayOrder在查询中时以所需的顺序显示。