gpt4 book ai didi

MySQL (10.1.24-MariaDB) ORDER BY 条件自动转换为字符串

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

我有一个动态 MySQL 代码,它有一个 ORDER BY 子句。该表包含多列,但重要的是统计质量

stat列是select语句中的数学计算,类型为INT类型,quality列为STRING类型。

现在我确实有这样的声明:

SELECT (col1+col2+col3) as cast(STAT as unsigned), QUALITY FROM GEAR
ORDER BY CASE WHEN 1=1 THEN stat
WHEN 1=0 THEN quality END DESC

现在我确实希望上述场景中的代码能够按统计列以整数方式对结果进行排序:

stat    quality
1 normal
2 normal
3 better
4 better

然而,结果显示的实际方式就像整数自动转换为字符串:

stat    quality
1 normal
11 normal
12 better
2 better

现在如果我:

  1. 删除第二个 case 1=0 语句(这永远不是真的)
  2. 将“quality”列转换为 int(从字符串)
  3. 将 WHEN 1=0 THEN QUALITY END DESC 中的“质量”值更改为任何其他数字列

该语句将正确工作并按 STAT 以整数方式对输出进行排序。

我试图理解为什么 MySQL (MariaDB) 决定以字符串方式对 stat 整数类型列进行排序,如果 CASE/IF ORDER BY 中的strong> 语句在另一个WHEN 中包含字符串类型列,并找到一种方法来避免这种情况发生。

玛丽亚

最佳答案

平底船。不要那样做。

我假设 1=11=0 来自试图控制按哪一列排序的代码?让你的代码稍微聪明一点——这样它就会生成

ORDER BY stat

ORDER BY quality

或者,如果您需要组合,请足够聪明地生成其中之一:

ORDER BY stat, quality
ORDER BY quality, stat

关于MySQL (10.1.24-MariaDB) ORDER BY 条件自动转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46343934/

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