Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将SQL查询结果转换为临时表_Sql_Sql Server_Temp Tables - Fatal编程技术网

将SQL查询结果转换为临时表

将SQL查询结果转换为临时表,sql,sql-server,temp-tables,Sql,Sql Server,Temp Tables,我试图将sql结果转换为临时表,但它不断返回以下错误: 应为As或Id或quoted-Id 我知道sql结果是正确的,但当我将SELECT*添加到newtable FROM中时,sql查询不起作用。怎么了 不确定为什么会有嵌套选择。这是您更可能追求的目标,因为这样您就不必为子查询别名: SELECT Url, Id INTO #newtable FROM Blob WHERE Id IN (SELECT BlobId FROM XrefBlobProjectMeeting) A

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

应为As或Id或quoted-Id

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


不确定为什么会有嵌套选择。这是您更可能追求的目标,因为这样您就不必为子查询别名:

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更改为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);

我只是用你的方式试过你的问题,它对我有效。解决方案如下所示

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))

试着在末尾添加:这是MySQL还是sql server?答案是可以的differ@RaymondNijland插入到。。。“选择”和“选择…”的行为非常不同。@RaymondNijland事实并非如此。它说基本上是一样的。事实上,我完全不同意这一点。对于SyBase SQL Server now,如果要在dbo.MyTable中运行INSERT,请选择1作为i;语句将失败,但是,在dbo.MyTable中选择1作为i;会很好的。相反地,创建表MyTable i int;插入dbo.MyTable,选择1作为i;工作正常,但创建表MyTable i int;在dbo.MyTable中选择1作为i;不会。SELECT..INTO语法将创建对象作为语句的一部分。如果对象已经存在,则语句失败。对于“插入到…”选择“完全相反”为真;该对象必须已经存在,如果不存在,该语句将失败。回答您对问题的评论,@Yash,因为它与答案有关。这将创建临时表newtable。任何名称以开头的表都是临时表,只有一个名称的表将在创建该表的连接期间保持不变。谢谢,这很有意义。
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))