У меня есть следующие таблицы.Объединить строки в MySQL
CREATE TABLE `cms_compound` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`nomenclature` varchar(50) DEFAULT NULL,
`version_number` bigint(20) DEFAULT NULL,
`version_region_id` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `cms_compound_disease` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`compound_id` bigint(20) NOT NULL,
`disease_id` bigint(20) NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `cms_disease` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`title` varchar(50) DEFAULT NULL,
`acronym` varchar(50) DEFAULT NULL,
`version_number` bigint(20) DEFAULT NULL,
`version_region_id` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `cms_version_region` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`version_id` bigint(20) NOT NULL,
`region_id` bigint(20) NOT NULL,
PRIMARY KEY (`id`)
);
И я использую следующий запрос,
SELECT SQL_CALC_FOUND_ROWS
c.id,
c.nomenclature,
d.acronym
FROM
compound c
LEFT JOIN
compound_disease cd ON (cd.compound_id = c.id)
LEFT JOIN
disease d ON (cd.disease_id = d.id)
LEFT JOIN
version_region vr ON (vr.id = c.version_region_id)
WHERE
c.version_number = 2 AND vr.version_id = 2 AND vr.region_id = 1
LIMIT 0, 10
это дает мне следующий результат.
+-----+--------------+---------+
| id | nomenclature | acronym |
+-----+--------------+---------+
| 155 | AEB071 | ALL |
| 155 | AEB071 | AML |
| 155 | AEB071 | AdCC |
| 156 | Nilotinib | NULL |
| 161 | Buparlisib | NULL |
| 162 | BYL719 | NULL |
+-----+--------------+---------+
Обратите внимание, что идентификатор 155
для номенклатуры AEB071
повторяются после LEFT JOIN
.
Я хочу, чтобы следующий результат (аббревиатура конкатенации)
+-----+--------------+--------------------+
| id | nomenclature | acronym |
+-----+--------------+--------------------+
| 155 | AEB071 | ALL, AML, AdCC |
| 156 | Nilotinib | NULL |
| 161 | Buparlisib | NULL |
| 162 | BYL719 | NULL |
+-----+--------------+--------------------+
Как я могу это сделать с помощью запроса MySQL?
[ 'GROUP_CONCAT()'] (https://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat) является активным ингредиентом для получения результата, который вы ищете. –
Мое предпочтение заключается в том, чтобы обрабатывать подобные вещи в коде уровня приложения. – Strawberry