gpt4 book ai didi

sql-server - 每个 GROUP BY 表达式必须至少包含一列不是外部引用

转载 作者:行者123 更新时间:2023-12-01 19:32:12 24 4
gpt4 key购买 nike

我在这里做错了什么?我收到此错误:

SELECT LEFT(SUBSTRING(batchinfo.datapath, PATINDEX('%[0-9][0-9][0-9]%', batchinfo.datapath), 8000), 
PATINDEX('%[^0-9]%', SUBSTRING(batchinfo.datapath, PATINDEX('%[0-9][0-9][0-9]%',
batchinfo.datapath), 8000))-1),
qvalues.name,
qvalues.compound,
qvalues.rid
FROM batchinfo JOIN qvalues ON batchinfo.rowid=qvalues.rowid
WHERE LEN(datapath)>4
GROUP BY 1,2,3
HAVING rid!=MAX(rid)

我想按具有最大删除次数的第一、第二和第三列进行分组。

无需 group by 和having 即可正常工作。

最佳答案

首先你不能这样做:

having rid!=MAX(rid)

HAVING 子句只能包含聚合组的属性。

此外,1, 2, 3 在 SQL Server 的 GROUP BY 中无效 - 我认为这仅在 ORDER BY 中有效。

你能解释一下为什么这不是你要找的吗:

select 
LEFT(SUBSTRING(batchinfo.datapath, PATINDEX('%[0-9][0-9][0-9]%', batchinfo.datapath), 8000), PATINDEX('%[^0-9]%', SUBSTRING(batchinfo.datapath, PATINDEX('%[0-9][0-9][0-9]%', batchinfo.datapath), 8000))-1),
qvalues.name,
qvalues.compound,
MAX(qvalues.rid)
from batchinfo join qvalues on batchinfo.rowid=qvalues.rowid
where LEN(datapath)>4
group by LEFT(SUBSTRING(batchinfo.datapath, PATINDEX('%[0-9][0-9][0-9]%', batchinfo.datapath), 8000), PATINDEX('%[^0-9]%', SUBSTRING(batchinfo.datapath, PATINDEX('%[0-9][0-9][0-9]%', batchinfo.datapath), 8000))-1),
qvalues.name,
qvalues.compound

关于sql-server - 每个 GROUP BY 表达式必须至少包含一列不是外部引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4453517/

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