gpt4 book ai didi

MySQL - ORDER BY、CASE 和 DESC

转载 作者:行者123 更新时间:2023-11-29 05:08:16 24 4
gpt4 key购买 nike

我有一个名为 $var 的 PHP 变量。我想根据 $var 的依赖性对我的结果进行排序。这个有效:

$sql = "
SELECT
myText1,
myText2,
someNumber
FROM myTable
ORDER BY
CASE
WHEN $var = 1 THEN myText1
WHEN $var = 2 THEN myText2
WHEN $var = 3 THEN someNumber
END";

但是当 $var 为 3 时,我需要按 someNumberDESC 进行排序。所以我尝试了这个:

$sql = "
SELECT
myText1,
myText2,
someNumber
FROM myTable
ORDER BY
CASE
WHEN $var = 1 THEN myText1
WHEN $var = 2 THEN myText2
WHEN $var = 3 THEN someNumber DESC
END";

这个会抛出一个语法错误。我怎样才能做到这一点?

最佳答案

将其分成三个 case 表达式:

ORDER BY (CASE WHEN $var = 1 THEN myText1 END) ASC,
(CASE WHEN $var = 2 THEN myText2 END) ASC,
(CASE WHEN $var = 3 THEN someNumber END) DESC

当然,ASC 是可选的 - 只是为了与 DESC 联系。

更重要的是,这会删除自动转换。 CASE 表达式只返回一种类型。当您混合不同的类型时,就会发生某种转换。该转换会影响值的排序。这解决了这个问题。

关于MySQL - ORDER BY、CASE 和 DESC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44367473/

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