簡體   English   中英

MySQL使用單獨的SELECT查詢從多個表插入表

[英]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

有關mysql上連接的更多信息

使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM