作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个查询:
SELECT DISTINCT *
FROM
(SELECT h.ID, h.Title
FROM table1 h
LEFT JOIN table2 k ON h.ID = k.MediaID) a
ORDER BY
CASE
WHEN 1 = 1 THEN a.Title
ELSE a.ID
END ASC
id | title
---+------
1 | aaaaa
2 | bbbb
3 | ccc
4 | ddddd
id | mediaId
---+---------
1 | 2
2 | 2
3 | 4
4 | 1
ORDER BY items must appear in the select list if SELECT DISTINCT is specified.
Else
它工作正常
最佳答案
一个 case
表达式返回单个值,具有单个类型。您正在混合类型,因此出现错误。 SQL 规则规定,在这种情况下,字符串会被转换为数字——这就是错误发生的地方。
简单的解决方案是两个表达式:1 = 1
比较神秘。这通常是这样的:
order by (case when @var = 1 then a.title end),
(case when @var = 2 then null else a.id end)
order by (case when 1 = 1 then a.title end),
else cast(a.id as varchar(255)
end)
关于sql - ORDER BY 在运行查询时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60464071/
我是一名优秀的程序员,十分优秀!