簡體   English   中英

SQL子查詢語法錯誤附近')' - 不缺少別名

[英]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 ,連接使用子查詢,該子查詢中的FROMWHERE子句也使用子查詢。 在我的實際查詢中,兩個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM