gpt4 book ai didi

SQL Order By with case when

转载 作者:行者123 更新时间:2023-12-04 23:12:39 25 4
gpt4 key购买 nike

我想了解 订购者 案例当 .

我的目标是从根本上理解它,因为我创建了不同的用例

我的基表如下

|   Name |
|--------|
| BPM |
| BXR |
| Others |
| XZA |
| XYZ |
| PQR |
| ABC |

查询 1:基本 ORDER BY
SELECT * 
FROM City
ORDER BY Name

查询 1 结果:给出正确的输出如下(名称列按升序排序)
|   Name |
|--------|
| ABC |
| BPM |
| BXR |
| Others |
| PQR |
| XYZ |
| XZA |

查询 2:我要 Others最后
SELECT * 
FROM City
ORDER BY CASE
WHEN Name = 'Others' THEN 1
ELSE 0
END

查询 2 结果:我得到了部分正确的结果。我得到了 Others最后但其他 names我希望它按升序排列。它们实际上显示为它们在基表中的方式。
|   Name |
|--------|
| BPM |
| BXR |
| XZA |
| XYZ |
| PQR |
| ABC |
| Others |

我也没有得到什么 01实际意思是在 ORDER BY陈述。

查询 3:我要 BXROthers最后。
 SELECT * 
FROM City
ORDER BY CASE
WHEN Name = 'BXR' THEN 1
WHEN Name = 'Others' THEN 2
ELSE 0
END

查询 3 结果:我得到了部分正确的结果。我最后得到了“其他”和“BXR”,但得到了其他 Name不按字母顺序排列。与查询 2 中看到的相同。这里我也不理解 0 的重要性, 1 , 2
|   Name |
|--------|
| BPM |
| XZA |
| XYZ |
| PQR |
| ABC |
| BXR |
| Others |

查询 4:我要 OthersPQR在顶部。
SELECT * 
FROM City
ORDER BY CASE
WHEN Name = 'PQR' THEN 0
WHEN Name = 'Others' THEN 1
ELSE 2
END

查询 4 ​​结果:我得到 PQROthers在顶部,但其余名称不按字母顺序排列。
|   Name |
|--------|
| PQR |
| Others |
| BPM |
| BXR |
| XZA |
| XYZ |
| ABC |

我对 0 的假设, 1 , 2是它们只是决定记录应该是的“顺序”的数字。
(应首先保留具有 0 的记录,如果所有其他记录均具有 1,则应按字母顺序排序)
(如果有'0'、'1'、'2', 0的记录应该排在第一位, 1的记录应该排在第二位,所有其他的 2的记录应该按字母顺序排列)

如果我错了,请纠正我

SQLFiddle

最佳答案

您还需要按顺序添加名称

DEMO

SELECT * 
FROM City
ORDER BY CASE
WHEN Name = 'PQR' THEN 0
WHEN Name = 'Others' THEN 1
ELSE 2
END,name

输出:
**Name**

PQR
Others
ABC
BPM
BXR
XYZ
XZA

关于SQL Order By with case when,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52950077/

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