作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以第 7 列排序为例 -
此代码根本不对数据进行排序:
ORDER BY CASE WHEN '1'='2' THEN 5
WHEN '1'='1' THEN 7
ELSE 13 END
如果我将其更改为硬编码序数,它会起作用:
ORDER BY 7
最佳答案
只要 SELECT
列表中的各个表达式属于同一类型,就可以使用表达式本身来代替 SELECT
列表编号:
SELECT expression1, expression2, ...
...
ORDER BY CASE
WHEN 1=2
THEN expression5
WHEN 1=1
THEN expression7
ELSE expression13
END;
如果数据类型不同,则使用类型转换进行调整。
您的查询不起作用,因为在 ORDER BY
中只能使用整型文字作为列号。在所有其他情况下,整数仅代表其常数值。
如果不是这样,ORDER BY
表达式很容易变得不明确。请看以下内容:
... ORDER BY intcol + 3;
这应该意味着“添加三个”还是“添加 SELECT
列表中的第三个表达式”?
关于postgresql - ORDER BY CASE & Ordinal 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41163758/
我是一名优秀的程序员,十分优秀!