在MySQL

时间:2017-09-26 00:27:13

标签: mysql

我有一个简单的MySQL表:

| CUST_ID | VISIT | PROD_ID |
|---------|-------|---------|
| 1       | 1     | 3473    |
| 1       | 2     | 324     |
| 1       | 2     | 324     |
| 2       | 1     | 426     |
| 2       | 2     | 4418    |
| 3       | 1     | 4523    |
| 4       | 1     | 976     |
| 4       | 1     | 86      |
| 4       | 2     | 3140    |
| 4       | 3     | 1013    |

我想将其改为:

| CUST_ID | VISIT | PROD_IDs |
|---------|-------|----------|
| 1       | 1     | 3473     |
| 1       | 2     | 324, 324 |
| 2       | 1     | 426      |
| 2       | 2     | 4418     |
| 3       | 1     | 4523     |
| 4       | 1     | 976, 86  |
| 4       | 2     | 3140     |
| 4       | 3     | 1013     |

这是一个丑陋的黑客,我明白了。

我不知道如何干净地创造这样的东西。我尝试了各种不成功的分组策略。即使是正确方向的线索或提示也会很棒。感谢。

1 个答案:

答案 0 :(得分:1)

如果您尝试按cust_id +访问进行分组,则可以执行此操作并在PROD_ID字段上使用GROUP CONCAT,例如:

SELECT
    CUST_ID, 
    VISIT, 
    GROUP_CONCAT(PROD_ID) PROD_IDS
FROM
    table
GROUP BY 
    CUST_ID,
    VISIT

参考:GROUP CONCAT