/ / Group By and contact rows, z wyjątkiem wartości domyślnej - mysql, sql

Grupuj według i kontakt wiersze z wyjątkiem wartości domyślnej - 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 ║
╚════════╩═══════════╩═══════╝

Wymagany wynik:

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

Chcę, aby był zgrupowany według random_id, ale dla random_Id = 0 Nie chcę, aby był zgrupowany. Wszelkie sugestie zostaną zaaprobowane.

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

Odpowiedzi:

1 dla odpowiedzi № 1
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