gpt4 book ai didi

MySQL - 如何按名称排序,然后按字母数字有选择地对表进行排序?

转载 作者:行者123 更新时间:2023-11-29 06:28:37 25 4
gpt4 key购买 nike

我想按名称对查询结果进行排序,然后在特定表上按字母数字顺序排序。

这适用于所有字母数字结果:

`ORDER BY 'name'+0 ASC"`;

但我只需要按字母数字顺序排序的表“周”,所有其他结果都按字母顺序排序。我已尝试以下方法但不起作用:

ORDER BY name, week('name'+0) ASC";

week结果应该是这样的:

Week 1
Week 2
Week 3
Week 4
...
Week10

不是:

Week 1
Week 10...

参见db-fiddle

最佳答案

对于 order by 子句,您可以使用如下所示的自定义字段。对于周名称字段,请使用下面的 ORDER BY条款。

根据我们的对话,添加了一列 seqselect条款,然后根据我们按照 ORDER BY 所做的数据条款

1. Added seq in select clause of all unions.

2. Order by changes:

ORDER BY seq ASC,
CASE seq
WHEN 1 THEN 0
WHEN 2 THEN CAST(SUBSTRING(name, 6) AS SIGNED)
WHEN 3 THEN CAST(SUBSTRING(name, -2) AS SIGNED)
WHEN 4 THEN 0
WHEN 5 THEN CAST(SUBSTRING(name, 6) AS SIGNED)
WHEN 6 THEN 0
END ASC,
name ASC
  • 首先,每个联合将包含选定的数据,即联合中的第一个查询的结果位于顶部,然后是第二个,依此类推。
  • 在这些联盟中,其中 name是一个字符串,第二个不会排序order by条款,仅 year , weekunit_name联合体根据数量排序
  • 按名称对所有剩余的联合进行排序。

参见Fiddle

关于MySQL - 如何按名称排序,然后按字母数字有选择地对表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57985839/

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