MySql:如何仅组合特定行?

标签 mysql select group-by grouping

我的 table 。

id  Exam Name    isCombine
1   Reading         0
2   Writing         0
3   Maths3          1
4   Maths4          1

上表只是一个例子。在真实表中有更多的列。我想合并 isCombine 值为 1 的行,并保留其他行。

我期待以下输出。

id      Exam Name           isCombine 
1       Reading                 0
2       Writing                 0
3,4     Maths3,Maths4           1,1

我不确定,是否可能。但是,我们将不胜感激任何帮助或建议。

最佳答案

您可以使用 GROUP_CONCAT:

SELECT CAST(id AS CHAR(50)) AS id, `Exam Name`, CAST(isCombine AS CHAR(50)) AS isCombine
FROM yourTable
WHERE isCombine = 0
UNION ALL
SELECT
    GROUP_CONCAT(id),
    GROUP_CONCAT(`Exam Name`),
    GROUP_CONCAT(isCombine)
FROM yourTable
WHERE isCombine = 1

我没有包含任何特定的顺序,您也没有指定任何顺序。如果您希望合并的行始终出现,例如在底部,我们可以针对此要求稍微修改上面的查询。

输出:

enter image description here

此处演示:

Rextester

关于MySql:如何仅组合特定行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46048087/

相关文章:

sql - 有没有办法在这个表中按时间间隔分组?

mysql - 一对多关系无法通过连接/分组来工作

mysql - 如何连接 mysql 查询中的行

php - ajax 动态对象(类似关联数组)通过 PDO 转换为两个 MySQL 表

java - 无法连接mysql服务器连接

WordPress 数据库需要 MySQL 左连接

MySQL 选择将每个字段放在新行上

sql - 返回 MYSQL 8 中 JSON 字段的 SELECT 中的所有键及其数组项

mysql - Rails group_by 总金额

mysql - Doctrine 默认值与空插入