我想在很多地方按1、1a,1b,2、2a,2b,...的顺序订购东西。我正在考虑以下选项:
1:将枚举字段用于1、1a,1b,2、2a,2b ...,以便其排序良好。缺点是在不同的地方定义了这样的枚举。
2:创建一个具有两个字段的额外表。一个字符串字段,其值分别为1、1a,1b,2、2a,2b,...,并且在需要排序的任何地方都具有该表的订单索引和联合。缺点是很多工会。
您会建议哪些选择,或者您考虑其他选择?
谢谢
最佳答案
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,string VARCHAR(12) NOT NULL);
INSERT INTO my_table (string) VALUES ('2b'),('1'),('2a'),('1b'),('1a'),('11');
SELECT * FROM my_table;
+----+--------+
| id | string |
+----+--------+
| 1 | 2b |
| 2 | 1 |
| 3 | 2a |
| 4 | 1b |
| 5 | 1a |
| 6 | 11 |
+----+--------+
SELECT * FROM my_table ORDER BY string + 0,string;
+----+--------+
| id | string |
+----+--------+
| 2 | 1 |
| 5 | 1a |
| 4 | 1b |
| 3 | 2a |
| 1 | 2b |
| 6 | 11 |
+----+--------+
关于mysql - 自定义订购SQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34722982/