在本教程中,您將學習如何使用 SQL INTO 語句將其他表中的數據插入到另一個指定的表中。
INTO語句簡介
要將其他表中的數據插入到另一個表中,請使用以下 SQL INTO 語句:
INSERT [ TOP ( expression ) [ PERCENT ] ]
INTO target_table (column_list)
select_query
在此語法中,將插入查詢語句返回的行。
此查詢是從任何其他表檢索數據的有效語句。 它必須返回與 中指定的列相對應的值。
TOP 子句部分是可選的。 它用于指定查詢返回的要插入到目標表()中的行數。 如果使用選項,語句將插入行的百分比。 請注意,最好將 TOP 子句與 ORDER BY 子句一起使用。
INTO示例
出于演示目的,創建下表:
CREATE TABLE sales.addresses (
address_id INT IDENTITY PRIMARY KEY,
street VARCHAR (255) NOT NULL,
city VARCHAR (50),
state VARCHAR (25),
zip_code VARCHAR (5)
);
1.將一個表的所有行插入到另一個表中示例
以下語句將表中的所有地址插入到表中:
INSERT INTO sales.addresses (street, city, state, zip_code)
SELECT
street,
city,
state,
zip_code
FROM
sales.customers
ORDER BY
first_name,
last_name;
要驗證插入結果,請使用以下查詢:
SELECT
*
FROM
sales.addresses;
執行上面的查詢,得到如下結果:
2. 插入一些行的示例
有時,只需將一個表中的一些行插入到另一個表中。 在這種情況下,您可以通過使用 WHERE 子句中的條件來限制從查詢返回的行數。
以下語句將位于以下城市的商店地址添加到表中:Santa Cruz 和:
INSERT INTO sales.addresses (street, city, state, zip_code)
SELECT
street,
city,
state,
zip_code
FROM
sales.stores
WHERE
city IN ('Santa Cruz', 'Baldwin')
SQL 返回以下消息,表明已成功插入兩行。
(2 rows affected)
3.插入前N行記錄
首先,使用以下語句刪除表中的所有行:
TRUNCATE TABLE sales.addresses;
其次,要插入按名字和姓氏排序的前 10 位客戶,請使用 TOP INTO 語句,如下所示:
INSERT TOP (10)
INTO sales.addresses (street, city, state, zip_code)
SELECT
street,
city,
state,
zip_code
FROM
sales.customers
ORDER BY
first_name,
last_name;
SQL 返回以下消息,表明已成功插入 10 行。
(10 rows affected)
3. 插入行的百分比
您可以將一定百分比的行插入表中,而不是使用絕對行計數。
首先,刪除表中的所有行:
TRUNCATE TABLE sales.addresses;
其次,將前 2% 的行插入按名字和姓氏排序的表中:
INSERT TOP (10) PERCENT
INTO sales.addresses (street, city, state, zip_code)
SELECT
street,
city,
state,
zip_code
FROM
sales.customers
ORDER BY
first_name,
last_name;
SQL 發出以下消息,指示已成功插入 145 行。
(145 rows affected)
在本教程中,您學習了如何使用 SQL INTO 語句將其他表中的行插入到指定表中。