2016-06-29 39 views
0

我有臺這樣的放一些列值在新列使用SQL

user_id workplace 
1   Microsoft 
1   Google 
2   eBay 
3   Panadora 
3   Netflix 

我想是有這樣的一個表:

user_id places_worked 
1  Microsoft,Google 
2  eBay 
3  Panadora,Netflix 

反正在SQL可做這個?

+0

退房GROUP_CONCAT。 – jarlh

回答

0

您可以通過組CONCAT操作使用組提到

SELECT USER_ID,GROUP_CONCAT(工作場所) FROM yourtable GROUP BY user_ID的;

檢查下面的例子

select * from payments; 
+----+------------+---------+-------+ 
| id | date  | user_id | value | 
+----+------------+---------+-------+ 
| 1 | 2016-06-22 |  1 | 10 | 
| 2 | 2016-06-22 |  3 | 15 | 
| 3 | 2016-06-22 |  4 | 20 | 
| 4 | 2016-06-23 |  2 | 100 | 
| 5 | 2016-06-23 |  1 | 150 | 
+----+------------+---------+-------+ 
5 rows in set (0.00 sec) 


select c.user_id,group_concat(p.value) from calls c inner join payments p on p.user_id=c.user_id group by c.user_id; 
+---------+-----------------------+ 
| user_id | group_concat(p.value) | 
+---------+-----------------------+ 
|  1 | 10,150,10,150,10,150 | 
|  2 | 100     | 
+---------+-----------------------+ 
2 rows in set (0.00 sec) 
+0

你可以請檢查它應該工作嗎 –

+0

你知道爲什麼這使得查詢如此之慢嗎?我想用這個group_concat()和另一個表的連接,它非常慢。幾乎沒有運行! – HimanAB

+0

你可以執行該表的索引語句並給出結果 –

1

正如@jarlh你可以做到這一點使用GROUP_CONCAT

SELECT user_id,GROUP_CONCAT(workplace) 
    FROM yourtable 
    GROUP BY user_id;