将SQL查询结果转换为临时表
我试图将sql结果转换为临时表,但它不断返回以下错误: 应为As或Id或quoted-Id 我知道sql结果是正确的,但当我将SELECT*添加到newtable FROM中时,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
不确定为什么会有嵌套选择。这是您更可能追求的目标,因为这样您就不必为子查询别名:
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))