当我运行此查询时,它将显示错误
select Title,ParentTitle,(select t.Title+'_'+t.ParentTitle from CTE t join CTE s on t.Title=s.Title where t.visible=0 or t.visible=1 )as show from CTE
当我上面的查询时,它将显示如下结果 结果
Title ParentTitle show
p1 Home p1_Home
p1.1 p1 p1_Home
p1.1.1 p1.1 p1_Home
p2 Home p1_Home
p2.1 p2 p1_Home
p2.2 p2 p1_Home
p2.3 p2.2 p1_Home
P3 Home p1_Home
p3.1 p3 p1_Home
P3.1.1 p3.1 p1_Home
预期 结果
Title ParentTitle show
p1 Home p1_Home
p1.1 p1 p1.1_p1
p1.1.1 p1.1 p1.1.1_p.11
p2 Home p2_Home
p2.1 p2 p2.1_p2
p2.2 p2 p2.2_p2
p2.3 p2.2 p2.3_p2.2
P3 Home p3_Home
p3.1 p3 p3.1_p3
P3.1.1 p3.1 p3.1.1_p3.1
错误消息
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
如何解决这个问题..
答案 0 :(得分:0)
您需要在子查询中使用WHERE子句以保证它返回标量值。
select Title,ParentTitle,(select visible from CTE WHERE Title = ????)as show from CTE
你需要WHERE Title = ????根据您的情况而不是WHERE Title = ????
答案 1 :(得分:0)
根据您的需要,您可以执行以下操作:
select Title,ParentTitle,(select top 1 visible from CTE )as show from CTE
或
select Title,ParentTitle,(select max(visible) from CTE )as show from CTE
或您想要的任何聚合函数。这就是聚合函数正在做的事情,它们聚合结果并返回一个值。