为什么我不能从我的查询中选择?

时间:2010-11-18 14:35:40

标签: sql select nested-query

我有一个像这样的查询(不,我的表和字段不是通过这些名称调用,但结构是相同的) -

SELECT table1.id, table2.id, table1.phone1
FROM table1 LEFT OUTER JOIN
    table3 ON table3.id = table1.id LEFT OUTER JOIN
    table2 ON table3.id2 = table2.id    
    WHERE table1.phone1 IS NOT NULL AND LTRIM(RTRIM(table1.phone1)) <> ''

UNION

SELECT table1.id, table2.id, table1.phone2
FROM table1  LEFT OUTER JOIN
    table3 ON table3.id = table1.id LEFT OUTER JOIN
    table2 ON table3.id2 = table2.id    
WHERE table1.phone2 IS NOT NULL AND LTRIM(RTRIM(table1.phone2)) <> ''

UNION

SELECT table1.id, table2.id, table2.phone
FROM table1 LEFT OUTER JOIN
    table3 ON table3.id = table1.id LEFT OUTER JOIN
    table2 ON table3.id2 = table2.id    
WHERE table2.phone IS NOT NULL AND LTRIM(RTRIM(table2.phone)) <> ''

运行正常。但是,当我尝试从中选择时(我最终会尝试使用分组等操作,但现在只是尝试了一个简单的选择),如下所示:

SELECT * FROM
    ( SELECT table1.id, table2.id, table1.phone1
    FROM table1 LEFT OUTER JOIN
        table3 ON table3.id = table1.id LEFT OUTER JOIN
        table2 ON table3.id2 = table2.id    
        WHERE table1.phone1 IS NOT NULL AND LTRIM(RTRIM(table1.phone1)) <> ''

    UNION

    SELECT table1.id, table2.id, table1.phone2
    FROM table1  LEFT OUTER JOIN
        table3 ON table3.id = table1.id LEFT OUTER JOIN
        table2 ON table3.id2 = table2.id    
    WHERE table1.phone2 IS NOT NULL AND LTRIM(RTRIM(table1.phone2)) <> ''

    UNION

    SELECT table1.id, table2.id, table2.phone
    FROM table1 LEFT OUTER JOIN
        table3 ON table3.id = table1.id LEFT OUTER JOIN
        table2 ON table3.id2 = table2.id    
    WHERE table2.phone IS NOT NULL AND LTRIM(RTRIM(table2.phone)) <> '' )

我收到错误:

Incorrect syntax near ')'.

我做错了什么?

1 个答案:

答案 0 :(得分:8)

您错过了命名subselect。关闭类似...) sub_query_name的内容。