[英]MySQL Insert Into Table From Multiple Tables Using Separate SELECT Queries
我有一個名為people_temp_1的表,其中包含:
Name Age PersonID
John 25 1
Jane 32 2
Chris 47 3
還有一個名為people_temp_2的名稱,其中包含由表1中的PersonID鏈接的其他信息:
ID Profession Location
1 Web Developer Texas
2 Graphic Designer North Carolina
3 Sales California
我想創建一個稱為人員的新表,該表“合並”兩個表中的數據。 我現在的操作方式是:
INSERT INTO people(name, age, profession, location)
SELECT people_temp_1.name AS name,
people_temp_2.age AS age,
(SELECT people_temp_2.profession FROM people_temp_2 WHERE people_temp_2.id = people_temp_1.personId) AS profession,
(SELECT people_temp_2.location FROM people_temp_2 WHERE people_temp_2.id = people_temp_1.personId) AS location
FROM people_temp_1
如您所見,我在插入查詢中使用多個選擇查詢,以便通過personId獲取相關數據。 當我應該能夠以某種方式一次查詢people_temp_2表並使用其所有列時,執行多個選擇查詢似乎有點骯臟,但是我不知道該怎么做。
有沒有更好的方法來構造插入語句?
它是SQL的基本功能之一-利用加盟 。 在您的情況下,最好使用outer join
people_temp1
,這樣您就不會錯過people_temp1
中沒有在people_temp2
具有相應記錄的people_temp2
:
insert into people(name, age, profession, location)
select
p1.name,
p1.age
p2.profession,
p2.location
from people_temp1 as p1
left outer join people_temp2 as p2 on p2.id = p1.person_id
嘗試如下使用聯接語法
INSERT INTO people(name, age, profession, location)
SELECT p1.namename,
p2.age,
p2.profession,
p2.location
FROM people_temp_1 p1
JOIN people_temp_2 p2 on p2.id = p1.personId
使用JOIN
。
INSERT INTO people(name, age, profession, location)
SELECT t1.name, t1.age, t2.profession, t2.location
FROM people_temp_1 t1
INNER JOIN people_temp_2 t2
ON t1.personid = t2.id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.