SELECT 来自表与 Azure 的联合 SQL

SELECT from union of tables with Azure SQL

我正在尝试使用 Azure SQL 进行 CTAS(创建 Table 作为 Select)。我的第一个也是最重要的问题是我无法从 2 个表的联合中得到 SELECT。例如:

SELECT *
FROM (
    SELECT * FROM [dbo].[table1]
    UNION ALL
    SELECT * FROM [dbo].[table2]
)

returns一个

Incorrect syntax near ';'. error message.

提前感谢您提供的任何提示!

  • 使用 CTE 而不是子查询,但如果你真的想那样做,那么你需要始终在每个查询后添加一个别名

代码 1:CTE

    With combined_data as (
    
        SELECT * FROM [dbo].[table1]
        UNION ALL
        SELECT * FROM [dbo].[table2]
    )
    
    select * from combined_data

CODE2:子查询

SELECT *
FROM (
    SELECT * FROM [dbo].[table1]
    UNION ALL
    SELECT * FROM [dbo].[table2]
) as combined_data

您需要一个 table 派生的别名 table:

SELECT t.*
FROM (SELECT * FROM [dbo].[table1]
      UNION ALL
      SELECT * FROM [dbo].[table2]
     ) t
-------^

Azure SQL 数据库 支持Create Table As (CTAS) 语法。 Azure Synapse Analytics,专用 SQL 池不支持此语法。

通过运行 select @@version确认您使用的数据库类型。

如果您使用的是 Azure SQL 数据库,您可以使用 SELECT ... INTO 创建 table 没有索引,或者简单地执行 table CREATE 和 INSERT 到它按照正常情况。一个简单的例子:

SELECT *
INTO someTable
FROM (
    SELECT * FROM [dbo].[table1]
    UNION ALL
    SELECT * FROM [dbo].[table2]
) AS x