mysql - 除默认值外的分组依据和联系人行

标签 mysql sql

╔════════╦═══════════╦═══════╗
║ MSG_ID ║ RANDOM_ID ║  MSG  ║
╠════════╬═══════════╬═══════╣
║      1 ║        22 ║ apple ║
║      2 ║        22 ║ bag   ║
║      3 ║         0 ║ cat   ║
║      4 ║         0 ║ dog   ║
║      5 ║         0 ║ egg   ║
║      6 ║        21 ║ fish  ║
║      7 ║        21 ║ hen   ║
║      8 ║        20 ║ glass ║
╚════════╩═══════════╩═══════╝

要求的结果:

╔═══════════╦═══════════╗
║ RANDOM_ID ║    MSG    ║
╠═══════════╬═══════════╣
║        22 ║ apple bag ║
║         0 ║ cat       ║
║         0 ║ dog       ║
║         0 ║ egg       ║
║        21 ║ fish hen  ║
║        20 ║ glass     ║
╚═══════════╩═══════════╝

我希望它按 random_id 分组,但对于 random_Id=0 我不希望它被分组。 任何建议将不胜感激。

Select  random_id as a, 
        (
            Select group_concat( message ORDER BY random_id ASC SEPARATOR ' ')
            from messagemaster 
            where  flag = 0  AND random_id=a
            group by random_id 
            order by random_id 
        ) as msg
from    messagemaster
where   flag = 0

最佳答案

SELECT  Random_ID, GROUP_CONCAT(msg SEPARATOR ' ') Msg
FROM    TableName
WHERE   Random_ID <> 0
GROUP   BY Random_ID
UNION
SELECT  Random_ID, Msg
FROM    TableName
WHERE   Random_ID = 0

关于mysql - 除默认值外的分组依据和联系人行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15493826/

相关文章:

mysql - 更新具有每个组最大日期的列的标志

mysql - 存储过程从动态sql创建存储过程

mysql - 查询中的平均值 - mysql

sql - GROUP BY 查询未按预期排序

mysql - mysql中选择两次表将行数据转化为列数据

php - 从mysql中选择YEAR(分页)

mysql - 尝试通过 servlet 连接 mySql 时出现 "java.lang.ClassNotFoundException"

sql - 为什么括号()不用于某些功能,如@@IDENTITY

mysql group_concat 里面有一个计数?

带分组的 SQL ORDER BY