2009-02-26 146 views
103

在SQL Server此插入100条记录,从Customers表到tmpFerdeen: -是否可以在UNION [ALL]中使用SELECT INTO子句?

SELECT top(100)* 
INTO tmpFerdeen 
FROM Customers 

是否有可能跨越UNION做一个SELECT INTO ALL SELECT: -

SELECT top(100)* 
FROM Customers 
UNION All 
SELECT top(100)* 
FROM CustomerEurope 
UNION All 
SELECT top(100)* 
FROM CustomerAsia 
UNION All 
SELECT top(100)* 
FROM CustomerAmericas 

不太清楚在哪里添加INTO子句。

+0

确定你需要工会吗? – sfossen 2009-02-26 16:52:52

+0

是的。由于记录在所有表格中都是唯一的。 – Ferdeen 2009-02-26 17:02:11

回答

147

此作品在SQL Server:

SELECT * INTO tmpFerdeen FROM (
    SELECT top 100 * 
    FROM Customers 
    UNION All 
    SELECT top 100 * 
    FROM CustomerEurope 
    UNION All 
    SELECT top 100 * 
    FROM CustomerAsia 
    UNION All 
    SELECT top 100 * 
    FROM CustomerAmericas 
) as tmp 
+1

此外,此工作原理SELECT top 100 * INTO tmpFerdeen FROM Customers UNION所有SELECT top 100 * FROM CustomerEurope UNION所有SELECT top 100 * FROM CustomerAsia UNION所有SELECT前100 *从CustomerAmericas(对不起,不能格式化这里的SQL)。谢谢! – Ferdeen 2009-02-26 17:06:20

-3

尝试这样:使用联合的结构创建最终的对象表tmpFerdeen。

然后

INSERT INTO tmpFerdeen (
SELECT top(100)* 
FROM Customers 
UNION All 
SELECT top(100)* 
FROM CustomerEurope 
UNION All 
SELECT top(100)* 
FROM CustomerAsia 
UNION All 
SELECT top(100)* 
FROM CustomerAmericas 
) 
+0

在SQL Server中临时表是即时创建的。我想这样做而不创建最终的对象表。谢谢。 – Ferdeen 2009-02-26 16:56:24

-1

也许尝试呢?

SELECT * INTO tmpFerdeen (
SELECT top(100)* 
FROM Customers 
UNION All 
SELECT top(100)* 
FROM CustomerEurope 
UNION All 
SELECT top(100)* 
FROM CustomerAsia 
UNION All 
SELECT top(100)* 
FROM CustomerAmericas) 
+0

缺少所需的表别名(如果添加将与接受的答案相同) – 2012-09-27 10:30:25

5
SELECT * INTO tmpFerdeen FROM 
(SELECT top(100)* 
FROM Customers 
UNION All 
SELECT top(100)* 
FROM CustomerEurope 
UNION All 
SELECT top(100)* 
FROM CustomerAsia 
UNION All 
SELECT top(100)* 
FROM CustomerAmericas) AS Blablabal 

这种 “Blablabal” 是必要的

90

你不需要派生表在所有的这一点。

只要把INTO第一SELECT

SELECT top(100)* 
INTO tmpFerdeen 
FROM Customers 
UNION All 
SELECT top(100)* 
FROM CustomerEurope 
UNION All 
SELECT top(100)* 
FROM CustomerAsia 
UNION All 
SELECT top(100)* 
FROM CustomerAmericas 
0

对于MS Access查询后,这个工作:

SELECT * INTO tmpFerdeen FROM( 
    SELECT top(100) * 
    FROM Customers 
UNION All 
    SELECT top(100) * 
    FROM CustomerEurope 
UNION All 
    SELECT top(100) * 
    FROM CustomerAsia 
UNION All 
    SELECT top(100) * 
    FROM CustomerAmericas 
) 

这并没有在MS Access工作

SELECT top(100) * 
    INTO tmpFerdeen 
    FROM Customers 
UNION All 
    SELECT top(100) * 
    FROM CustomerEurope 
UNION All 
    SELECT top(100) * 
    FROM CustomerAsia 
UNION All 
    SELECT top(100) * 
    FROM CustomerAmericas 
相关问题