gpt4 book ai didi

mysql - 如何在 MySQL 查询中定义自定义 ORDER BY

转载 作者:行者123 更新时间:2023-11-29 11:41:15 26 4
gpt4 key购买 nike

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

ColumnA001_eng004_eng002_chn003_usa

但是按 ColumnA 排序给了我

ColumnA001_eng002_chn003_usa004_eng

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

最佳答案

您可以使用字段:

select *
from tablename
order by
FIELD(ColumnA, '001_eng', '004_eng', '002_chn', '003_usa')

(请注意,如果ColumnA不在列表中,字段函数将返回0并且行将放在顶部)

或者您可以使用 CASE WHEN:

select *
from tablename
order by
case
when ColumnA='001_eng' then 1
when ColumnA='004_eng' then 2
when ColumnA='002_chn' then 3
when ColumnA='003_usa' then 4
else 5
end

或者您可以使用不同的语言表来指定顺序:

id | name    | sortorder
1 | 001_eng | 1
2 | 002_chn | 3
3 | 003_usa | 4
4 | 004_eng | 2

然后你可以使用联接

select t.*
from
tablename t inner join languages l
on t.lang_id = l.id
order by
l.sortorder

(如果有适当的索引,这将是具有最佳性能的更好解决方案)

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com