2016-11-15 93 views
0

我需要加入用戶表與所有用戶的圖像在一排,這樣合併兩個表到一個表

table user 
+----+---------------+ 
|id | name  | 
+----+---------------+ 
| 1 | Mike   | 
| 2 | Jerry   | 
| .. | .....   | 
+----+---------------+ 

table image 
+------+---------+---------+ 
| id | user_id | img | 
+------+---------+---------+ 
| 1 | 1  | img_1 | 
| 2 | 1  | img_2 | 
| 3 | 1  | img_3 | 
| 4 | 2  | img_4 | 
| .. | .... | ..... | 
+------+---------+---------+ 

我需要生成SQL結果這樣

+------+--------+----------+----------+----------+ 
| id | name | img1 | img2 | img3 | 
+------+--------+----------+----------+----------+ 
| 1 | Mike | img_1 | img_2 | img_3 | 
+------+--------+----------+----------+----------+ 
| ... | .... | .... | .... | .... | 
+------+--------+----------+----------+----------+ 

回答

2

這不是本身在MySQL中受到支持,但是您可以使用數據透視表來創建您的結果,但是如果可能的話,這需要一些硬編碼。

爲您的任務簡單的解決方案,可以使用GROUP_CONCAT(),這會產生像

+------+--------+----------+----------+----------+ 
| id | name | images      | 
+------+--------+----------+----------+----------+ 
| 1 | Mike | img_1;img_2;img_3    | 
+------+--------+----------+----------+----------+ 
| ... | .... |        | 
+------+--------+----------+----------+----------+ 

一個結果。如果這是夠好,就可以實現與

SELECT a.id, a.name, GROUP_CONCAT(b.img) images 
FROM user a 
    INNER JOIN image b ON a.id = b.user_id 
GROUP BY b.user_id;