我的数据库中有这样的数据:

jamu_a | jamu_b | khasiat

A      | B      | Z
A      | B      | X
A      | B      | C

然后,我想要这样的输出:
jamu_a | jamu_b | khasiat | total

A      | B      | Z, X, C | 3

我不是MySQL的专家,什么样的查询才能产生这样的输出?
告诉我MySQL是否无法做到这一点并且需要某种编程语言。
提前致谢

最佳答案

SELECT  jamu_a,
        jamu_b,
        GROUP_CONCAT(khasiat) khasiat,
        COUNT(*) total
FROM    TableName
GROUP   BY  jamu_a, jamu_b
  • SQLFiddle Demo
  • MySQL GROUP_CONCAT()

  • 输出值
    ╔════════╦════════╦═════════╦═══════╗
    ║ JAMU_A ║ JAMU_B ║ KHASIAT ║ TOTAL ║
    ╠════════╬════════╬═════════╬═══════╣
    ║ A      ║ B      ║ Z,X,C   ║     3 ║
    ╚════════╩════════╩═════════╩═══════╝
    

    如果KHASIAT列上有重复的值并且您希望它是唯一的,则可以在DISTINCT上添加GROUP_CONCAT()
    SELECT  jamu_a,
            jamu_b,
            GROUP_CONCAT(DISTINCT khasiat) khasiat,
            COUNT(*) total
    FROM    TableName
    GROUP   BY  jamu_a, jamu_b
    

    08-04 15:04