[英]Merge two MySQL tables
我有兩個表:數據和注釋
data:
-------------------
id | name | email |
pics:
-------------------
msg_id | pic |
數據由id和msg_id關聯。 如何將這兩個表合並為最后一個表?
編輯:數據中的某些行沒有關聯的圖片,我需要保留它們。
您可能要使用INSERT INTO ... SELECT
語法:
INSERT INTO final_table
SELECT id, name, email, pic
FROM data
JOIN pics ON (pics.msg_id = data.id);
例:
您當前的數據:
CREATE TABLE data (id int, name varchar(20), email varchar(100));
INSERT INTO data VALUES (1, 'name1', 'a@example.com');
INSERT INTO data VALUES (2, 'name2', 'b@example.com');
INSERT INTO data VALUES (3, 'name3', 'c@example.com');
INSERT INTO data VALUES (4, 'name4', 'd@example.com');
CREATE TABLE pics (msg_id int, pic varchar(100));
INSERT INTO pics VALUES (1, 'pic1.jpg');
INSERT INTO pics VALUES (1, 'pic2.jpg');
INSERT INTO pics VALUES (2, 'pic3.jpg');
INSERT INTO pics VALUES (2, 'pic4.jpg');
INSERT INTO pics VALUES (3, 'pic5.jpg');
您的新表:
CREATE TABLE final_table (
id int, name varchar(20), email varchar(100), pic varchar(100)
);
INSERT INTO final_table
SELECT id, name, email, pic
FROM data
LEFT JOIN pics ON (pics.msg_id = data.id);
結果:
SELECT * FROM final_table;
+------+-------+---------------+----------+
| id | name | email | pic |
+------+-------+---------------+----------+
| 1 | name1 | a@example.com | pic1.jpg |
| 1 | name1 | a@example.com | pic2.jpg |
| 2 | name2 | b@example.com | pic3.jpg |
| 2 | name2 | b@example.com | pic4.jpg |
| 3 | name3 | c@example.com | pic5.jpg |
| 4 | name4 | d@example.com | NULL |
+------+-------+---------------+----------+
6 rows in set (0.00 sec)
可能您需要從兩個表中獲取數據並將它們連接到一個表中? 因此,您可以使用以下查詢:
SELECT D.*, P.* FROM data D, pics P WHERE D.Id=P.msg_id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.