2010-08-20 97 views
1

我想把结果从sql查询到表中,但如果我做SELECT列名NEWTOBLE(这是不创建),它的好一次,但是当我再次运行该查询时,它说表已经存在。我所做的是从新查询中得到的结果,我每周都会运行它,所以它不应该给我错误:表已经存在。SQL查询结果到一个表

例如:我想把下面的查询结果放入一个Newtable EmployeeDetails中,我将每周运行一次。

select a.Name, b.Id 
from Database1 a left join 
    Database2 b 
ON a.Id = b.Id 
+0

您只希望脚本创建一个新表格一次?那么每个星期只需在现有的数据上添加数据? – 2010-08-20 21:46:23

+0

重复[如何从SQL查询的结果创建表?](http://stackoverflow.com/questions/3534735/how-to-create-a-table-from-the-results-of-a -sql-query) – 2010-08-20 21:46:39

+0

@OMG:不完全,有点不同的场景 – 2010-08-20 21:47:17

回答

2

请与IF EXISTS

例如对于SQL Server

IF EXISTS (SELECT * FROM sys.objects 
WHERE object_id = OBJECT_ID(N'[dbo].[YOurTableName]') 
AND type in (N'U')) 
BEGIN 
     DROP TABLE [dbo].[YOurTableName 
END 

select * into [dbo].[YOurTableName] 
from ...... 
+0

只有当你想完全替换数据时才有用。 – HLGEM 2010-08-20 21:52:06

+0

我明白他想使用select into .... – SQLMenace 2010-08-20 21:53:40

3

改为使用INSERT INTO。

但要确保你打电话插入第一时间之前该表已经创建,

INSERT INTO table1 (column1, column2, ...) 
SELECT column3, column4, ... 
FROM table2 
0

使用插入 - 插入到newtbl从TBL选择X,Y,Z

(使确保您创建表第一)

+0

我试过,但表名将是相同的,所以它给了我同样的错误:表已经存在 – User7354632781 2010-08-20 21:51:29

0

如果你只需要生成的表对于当前的SQL连接的持续时间,创建一个临时表:

CREATE TEMPORARY TABLE newtable SELECT the_rest_of_your_query

或者,如果你想保持桌面绕了一周,但每星期完全取代它,确保它的第一个走了:

DROP TABLE IF EXISTS newtable

2
IF EXISTS (SELECT * FROM sys.objects 
    WHERE object_id = OBJECT_ID(N'[dbo].[YOurTableName]') AND type in (N'U')) 
     //INSERT INTO STATEMENT 
ELSE 
    //SELECT INTO STATEMENT THAT U ALREADY HAVE