ID 我的目标是选择输出如下: > France > Paris-6ren">
gpt4 book ai didi

sql - 使用 CTE 进行递归选择时出现错误 - "UNION operator must have an equal number of expressions"

转载 作者:行者123 更新时间:2023-12-02 05:04:22 28 4
gpt4 key购买 nike

此时我有一个表tblLocation,其中包含ID、Location、PartOfID列。

表递归地连接到自身:PartOfID -> ID

我的目标是选择输出如下:

> France > Paris > AnyCity >

说明:AnyCity 位于巴黎,巴黎位于法国。

到目前为止我找到的解决方案是这样的:

; with q as (
select ID,Location,PartOf_LOC_id from tblLocatie t
where t.ID = 1 -- 1 represents an example
union all
select t.Location + '>' from tblLocation t
inner join q parent on parent.ID = t.LOC_PartOf_ID
)
select * from q

不幸的是我收到以下错误:

All queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists.

如果您知道如何修复我的输出,那就太好了。

最佳答案

问题出在这里:

--This result set has 3 columns
select LOC_id,LOC_locatie,LOC_deelVan_LOC_id from tblLocatie t
where t.LOC_id = 1 -- 1 represents an example

union all

--This result set has 1 columns
select t.LOC_locatie + '>' from tblLocatie t
inner join q parent on parent.LOC_id = t.LOC_deelVan_LOC_id

为了使用unionunion all,所有结果集中的列数及其类型应该相同。

我想您应该将 LOC_deelVan_LOC_id 列添加到第二个结果集中

关于sql - 使用 CTE 进行递归选择时出现错误 - "UNION operator must have an equal number of expressions",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20299390/

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