我有兩個表:數據和註釋合併兩個MySQL表
data:
-------------------
id | name | email |
pics:
-------------------
msg_id | pic |
的數據由ID和MSG_ID的產生密切相關。我如何將這兩張表合併成最後一張?
編輯:數據中的某些行沒有關聯圖片,我需要保留它們。
我有兩個表:數據和註釋合併兩個MySQL表
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', '[email protected]');
INSERT INTO data VALUES (2, 'name2', '[email protected]');
INSERT INTO data VALUES (3, 'name3', '[email protected]');
INSERT INTO data VALUES (4, 'name4', '[email protected]');
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 | [email protected] | pic1.jpg |
| 1 | name1 | [email protected] | pic2.jpg |
| 2 | name2 | [email protected] | pic3.jpg |
| 2 | name2 | [email protected] | pic4.jpg |
| 3 | name3 | [email protected] | pic5.jpg |
| 4 | name4 | [email protected] | NULL |
+------+-------+---------------+----------+
6 rows in set (0.00 sec)
對不起,但現在我看到一個問題,數據中的某些數據沒有圖片,也沒有合併 – greenbandit 2010-09-14 17:44:34
@greenbandit:您可能想使用'LEFT JOIN'來代替'JOIN' ...更新我的答案舉一個例子。 – 2010-09-14 18:01:59
似乎工作正常,再次感謝。 – greenbandit 2010-09-14 18:20:40
可能您需要從這兩個表中獲取數據並將它們合併到一個表中?所以你可以使用下面的查詢:
SELECT D.*, P.* FROM data D, pics P WHERE D.Id=P.msg_id
你不清楚你期望的結果是什麼?它是一個新表還是隻需要從兩個表中返回數據的SELECT語句? – 2010-09-13 22:10:52
只是一個新表。 – greenbandit 2010-09-14 17:48:37