Я написал следующий запрос MYSQL и версия Mysql: 8.0.18-commercial
SELECT p.server, 'Type_ABC' AS Check_Type, COALESCE(vmtable.res) AS result
FROM server p
INNER JOIN truns t ON t.oq_id = p.oq_id
AND t.id = (SELECT t2.id FROM truns t2 WHERE t2.oq_id = p.oq_id order by t2.created_at desc limit 1 )
INNER JOIN qvuln_info vmtable ON vmtable.run_id = t.id
LEFT JOIN qvuln_info_data vmtableinfo ON vmtableinfo.qid = vmtable.qid
WHERE p.server regexp 'server1';
Я получаю следующий вывод из вышеприведенного запроса:
Hostname Check_Type result
server1 Type_ABC Result 1
server1 Type_ABC Result 2
server1 Type_ABC Result 3
server1 Type_ABC Result 4
Я хочу объединить результаты, чтобы выходные данные выглядели следующим образом:
Hostname Check_Type result
server1 Type_ABC Result 1,,Result 2,,Result 3,,Result 4
Для достижения указанного выше результата я написал следующий запрос, но он выдает синтаксическую ошибку:
SELECT p.server, 'Type1' AS Check_Type,
GROUP_CONCAT((COALESCE(vmtable.res) AS result) SEPARATOR ', ')
FROM server p
INNER JOIN truns t ON t.oq_id = p.oq_id
AND t.id = (SELECT t2.id FROM truns t2 WHERE t2.oq_id = p.oq_id order by t2.created_at desc limit 1 )
INNER JOIN qvuln_info vmtable ON vmtable.run_id = t.id
LEFT JOIN qvuln_info_data vmtableinfo ON vmtableinfo.qid = vmtable.qid
WHERE p.server regexp 'server1';
Как правильно использовать GROUP_CONCAT
с COALESCE
?