gpt4 book ai didi

sql - 如何修复关键字 'ORDER' 附近的错误语法

转载 作者:行者123 更新时间:2023-12-02 15:38:57 26 4
gpt4 key购买 nike

我有以下 SQL,当我尝试执行它时,它给了我 Incorrect syntax near keyword 'ORDER':

SELECT COUNT(*) AS ID 
FROM Employees i
INNER JOIN #WeightedIDs w
ON (i.ID = w.ID)
WHERE (i.DepartmentID = 10 and i.ShiftID = 2)

UNION ALL

SELECT i.ID FROM Employees i
INNER JOIN #WeightedIDs w
ON (i.ID = w.ID)
WHERE (i.DepartmentID = 10 and i.ShiftID = 2)
ORDER BY w.[Weight] ASC

我该如何解决?

更新:

这就是我实际想要完成的。我有一个 SPROC,它根据一系列不同的条件动态生成查询。它还构建了一个临时表,其中包含 ID 和与这些 ID 关联的权重,因此我希望结果按此排序。生成查询后,我想获得计数以及列表中返回的 ID。

最佳答案

在联合中,您只能对完整结果进行排序,而不能对部分结果进行排序,因为对子选择进行排序没有意义——它是一个关系/表,它们(根据定义)未排序。

如果您希望对总体结果进行排序,您可以添加一个 ORDER BY 1 ASC 以按第一列(也是唯一的)列排序。如果您希望第一部分的所有行都排在第二部分之前并按权重对第二部分进行排序,您可以执行以下操作:

select id
from
(
SELECT COUNT(*) AS ID,
0 as sort_column
FROM Employees i
INNER JOIN #WeightedIDs w
ON (i.ID = w.ID)
WHERE (i.DepartmentID = 10 and i.ShiftID = 2)

UNION ALL

SELECT i.ID,
x.[Weight]
FROM Employees i
INNER JOIN #WeightedIDs w
ON (i.ID = w.ID)
WHERE (i.DepartmentID = 10 and i.ShiftID = 2)
) x
order by sort_column

这假设 x.weight 的值大于零。如果不是,您需要在并集的第一部分使用不同的(较低的)值。

关于sql - 如何修复关键字 'ORDER' 附近的错误语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11782705/

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