我需要按以下顺序输出(首先,按最后3个字母分组,然后根据前3个数字进行排列)

列A

001_eng
004_eng
002_chn
003_usa


但是ColumnA的订单给了我

列A

001_eng
002_chn
003_usa
004_eng


这只是示例数据。我有数百种这种格式的条目,并且值每天都在变化。因此,指定字段内的所有条目都不可行。
我不确定在我的情况下如何使用FIELD()。

最佳答案

如果所有SUBSTRING_INDEX值的格式都与示例数据中的格式相同,则可以使用ColumnA

SELECT *
FROM mytable
ORDER BY FIELD(SUBSTRING_INDEX(ColumnA, '_', -1), 'eng', 'chn', 'usa'),
         SUBSTRING_INDEX(ColumnA, '_', 1)


Demo here

关于mysql - 如何在MySQL查询中定义自定义ORDER BY,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35745312/

10-13 03:30