[英]SQL Subquery Syntax Error Near ')' — Not missing alias
我有一个类似的问题这一个 ,但在这种情况下,解决办法是添加别名的子查询。 在我的例子中,我的每个子查询都有一个别名,但是我在每个子查询的末尾都收到了Incorrect syntax near ')'
。
我在2008 R2中编写查询但是以SSRS 2000为目标
我的整个查询相当长,但这是一个缩短的伪代码版本:
SELECT A
,B
,C
,D
,E
FROM
(
SELECT A as 'A', B as 'B', id
FROM table t
WHERE A = 'some value'
GROUP BY A, B
) AS sub1
LEFT JOIN
(
SELECT C as 'C', D as 'D', id
FROM
(
SELECT id
FROM nutherTable
WHERE id IN
(
SELECT DISTINCT id
FROM sub1
)
)
WHERE D like '%param%'
) AS sub2
ON sub2.id = sub1.id
LEFT JOIN
(
SELECT E as 'E', id
FROM finalTable
WHERE E IS NOT NULL
) AS sub3
ON sub3.id = sub2.id
您会注意到,在第一个LEFT JOIN
,连接使用子查询,该子查询中的FROM
和WHERE
子句也使用子查询。 在我的实际查询中,两个LEFT JOINs
都具有相同的结构。 我不明白的一件事是嵌套子查询不需要别名。 如果我尝试使用嵌套子句的别名,我会收到错误。 所以它只是在LEFT JOINs
中遇到外部查询问题。
我在其他帖子中读过子查询只能返回单个字段的结果,但是我看过很多例子,从子查询返回多个字段,所以我不认为这是问题。 或者,如果这将是一个问题,错误将是不同的。 我读过的所有内容都将此问题归结为缺少子查询的别名,并且无论是否使用别名(没有别名,以及使用AS
而不使用AS
),我都会得到相同的结果。
您需要为作为结果集使用的每个子查询提供表别名:
LEFT JOIN
(
SELECT C as 'C', D as 'D', id
FROM
(
SELECT id
FROM nutherTable
WHERE id IN
(
SELECT DISTINCT id
FROM sub1
)
) SomeTableName -- HERE IS THE PROBLEM
WHERE D like '%param%'
) AS sub2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.