我有臺這樣的放一些列值在新列使用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可做這個?
我有臺這樣的放一些列值在新列使用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可做這個?
您可以通過組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)
你可以請檢查它應該工作嗎 –
你知道爲什麼這使得查詢如此之慢嗎?我想用這個group_concat()和另一個表的連接,它非常慢。幾乎沒有運行! – HimanAB
你可以執行該表的索引語句並給出結果 –
正如@jarlh你可以做到這一點使用GROUP_CONCAT
SELECT user_id,GROUP_CONCAT(workplace)
FROM yourtable
GROUP BY user_id;
退房GROUP_CONCAT。 – jarlh