gpt4 book ai didi

sql - ORDER BY 在运行查询时出错

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

我有这个查询:

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

我的表是这样的:

表格1
    id | title
---+------
1 | aaaaa
2 | bbbb
3 | ccc
4 | ddddd

表2
    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/

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