gpt4 book ai didi

sql - ORDER BY 在 CASE 表达式中有两个条件

转载 作者:行者123 更新时间:2023-12-04 16:07:41 34 4
gpt4 key购买 nike

我有一个 select 语句,我想在其中根据 CASE 表达式按不同的条件进行排序,但是当我想按多个条件进行排序时我遇到了语法问题。我希望它类似于以下代码,但出现语法错误。

SELECT *
FROM Table1
ORDER BY
CASE WHEN @OrderBy = 1 THEN Column1, Column2 END,
CASE WHEN @OrderBy = 2 THEN Column3 END,

最佳答案

虽然一个case只返回一个值,你可以重复这个case:

SELECT *
FROM Table1
ORDER BY (CASE WHEN @OrderBy = 1 THEN Column1
WHEN @OrderBy = 2 THEN Column3
end),
(CASE WHEN @OrderBy = 1 THEN Column2 END)

这给出了 Column2@OrderBy = 1 的二次排序。

事实上,这也行,而且可能更接近您最初的想法:

SELECT *
FROM Table1
ORDER BY (CASE WHEN @OrderBy = 1 THEN Column1 end),
(CASE WHEN @OrderBy = 1 THEN Column2 end),
(CASE WHEN @OrderBy = 2 THEN Column3 end)

在此版本中,前两个子句将为所有值为 2 的行返回 NULL。然后将调用第三行进行排序。

关于sql - ORDER BY 在 CASE 表达式中有两个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17936215/

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