2013-08-29 93 views
-1

我想根據共享值將2個表連接到一個新表,但沒有太大的運氣。 這是我得到的。在一個共同的值上合併結構不同的MySQL表

表1:

id  |name  | 
----------|---------| 
1   |test1 | 

表2:

id  |name  |location |color | 
----------|---------|---------|---------| 
1   | test1 | 10  | blue | 

什麼這裏後,我是一個新的表(表3),其採用表1從「名」,並從表2與它匹配起來反對名然後將匹配結果粘貼到表3中。任何與表1不匹配的東西都應該被忽略。所以如果我在表2中有「test99」,但是在表1中沒有,請不要把它放在表3中。

我讀過的一切都說這不應該很難做,但我只是沒有任何運氣。

謝謝!

+0

提示:內加入Table 1和Table的名字 – 2013-08-29 16:19:41

+0

這裏有一個簡短的教程[MySQL的加入(http://www.tutorialspoint.com/mysql/mysql-using-joins.htm)。此外,您最好將表格與數字字段(如id)「鏈接」,而不是像名稱那樣的文本字段。此外,將名稱保存兩次也沒有意義 – Itay

+0

是的,你會遇到一個潛在的文本鏈接問題,你最終在一個表中測試42,在另一個表中測試42(間距問題),或者你將有一個在一張桌子之前或之後的空間中,而不是另一張......這對於微不足道的東西來說可能是好的,但是一旦這種增長超過了幾個記錄,至少說不上理想。 – user2366842

回答

0

嘗試

SELECT Table2.Name, Table2.Location, Table2.Colour 
FROM Table2 
INNER JOIN Table1 ON Table2.Name = Table1.Name 

雖然我注意到你有標識可能被認爲是你的主鍵和外鍵?如果是這樣嘗試

SELECT Table2.Name, Table2.Location, Table2.Colour 
FROM Table2 
INNER JOIN Table1 ON Table2.Id= Table1.Id 
+0

這是我最終使用的一些變化。感謝一幫幫忙!今天學到了新東西:) – N0ctrnl

0

你可以做一個選擇表。

Select * INTO Table3 
FROM Table2 
WHERE Table2.Name IN (SELECT Name FROM Table1) 
+1

MySQL不支持'SELECT ... INTO'語法。查看[docs](https://dev.mysql.com/doc/refman/5.6/en/ansi-diff-select-into-table.html) – 2013-08-29 16:22:15

+0

您只需添加具有相同結構的table3並調整它使用Insert Into然後改爲.. INSERT INTO Table3 SELECT * FROM Table2 WHERE Table2.Name IN(SELECT Name FROM Table1) –

0

或者您可以使用INSERT ... SELECT語法並使用JOIN。

INSERT INTO table3 (id, name, location, color) 
SELECT t.id, t2.name, t.location, t.color FROM table1 AS t JOIN table2 AS t2 ON t2.id = t1.id 
相關問題