首页 > 解决方案 > 将 SQL 查询结果转换为临时表

问题描述

我正在尝试将我的 sql 结果转换为临时表,但它不断返回以下错误:

期望 As 或 Id 或quoted-ID。

我知道 sql 结果是正确的,但是当我添加时SELECT * INTO #newtable FROM,sql 查询不起作用。怎么了?

SELECT *
INTO #newtable
FROM 
    (
    SELECT
        Url,Id 
    FROM Blob 
    WHERE 
        Id IN 
            (
            SELECT 
                BlobId 
            FROM 
                XrefBlobProjectMeeting
            ) 
        AND Extension NOT IN ('xlsx','xls','avi','jpg','mp4','wmv','png')
        AND (RefContentTypeId IN (11,13,14,35))
    )

标签: sqlsql-servertemp-tables

解决方案


不知道为什么你有嵌套SELECT的 s。这是您更可能追求的,因为您不必为子查询起别名:

SELECT Url,
       Id
INTO #newtable
FROM Blob
WHERE Id IN (SELECT BlobId FROM XrefBlobProjectMeeting)
  AND Extension NOT IN ('xlsx', 'xls', 'avi', 'jpg', 'mp4', 'wmv', 'png')
  AND (RefContentTypeId IN (11, 13, 14, 35));

但是,您最好将其更改IN为 an EXISTS

SELECT [Url],
       Id
INTO #newtable
FROM Blob B
WHERE EXISTS (SELECT 1
              FROM XrefBlobProjectMeeting E
              WHERE E.BlobID = B.ID)
  AND Extension NOT IN ('xlsx', 'xls', 'avi', 'jpg', 'mp4', 'wmv', 'png')
  AND RefContentTypeId IN (11, 13, 14, 35);

推荐阅读