在SQL Server Management Studio中创建临时表时遇到问题

时间:2020-07-21 10:59:13

标签: sql sql-server ddl

我正在尝试通过2个表的联接创建表,以便可以在数据之间切换。但是我在“(”上遇到语法错误,如果我删除I而只做“ AS”,则在select命令上出现语法错误。

CREATE TABLE Neigh 
AS 
    (SELECT *
     FROM COR_NEIGBORHOODS_N1 A1 
     LEFT JOIN NEIG_RAMAT_GAN_SHCONOT B1 ON A1.Settle_Name = B1.City_Name 
                                         AND A1.NEIGHBORHOODs_AREA_FNAME = B1.name
     WHERE B1.City_Name IS Null AND A1.Settle_Code = 8600)

有人知道出什么问题吗?

2 个答案:

答案 0 :(得分:4)

SQL Server不支持create table as。相反,它使用语法into。所以:

select *
into Neigh
from COR_NEIGBORHOODS_N1 n left join
     NEIG_RAMAT_GAN_SHCONOT nrg
     on n.Settle_Name = nrg.City_Name and
        n.NEIGHBORHOODs_AREA_FNAME = nrg.name
WHERE nrg.City_Name IS Null and n.Settle_Code = 8600;

使用select *很危险-因为列名可能重复。我建议您专门列出各列。

请注意,我还将表别名从无意义的字母更改为表名称的缩写。

答案 1 :(得分:1)

CREATE TABLE Neigh AS (SELECT Column_name AS Column1,Column_name AS Column2 FROM COR_NEIGBORHOODS_N1 CN LEFT JOIN NEIG_RAMAT_GAN_SHCONOT NRG ON CN.Settle_Name = NRG.City_Name AND CN.NEIGHBORHOODs_AREA_FNAME = NRG.name WHERE NRG.City_Name IS Null AND CN.Settle_Code = 8600)

请为列别名使用“ AS”,其别名与我在上述查询中使用的表相同。