我有一张table叫 fruits
看起来是这样的:
+-----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| worm_id | int(11) | YES | MUL | NULL | |
| event_id | varchar(15) | YES | | NULL | |
+-----------------+--------------+------+-----+---------+----------------+
表中的值如下所示:
+----------+-------------+-----------------+
| id | worm_id | event_id |
+----------+-------------+-----------------+
| 12 | 134 | 1468036258-1426 |
| 13 | 134 | 1468036258-1426 |
| 14 | 134 | 1468036258-1426 |
| 15 | NULL | 1468036258-1426 |
| 16 | 135 | 1468036258-1426 |
| 17 | 135 | 1468036258-1426 |
| 18 | 135 | 1468036258-1426 |
| 19 | NULL | 1468036258-1426 |
| 20 | 134 | 1468102511-5892 |
| 21 | 134 | 1468102511-5892 |
| 22 | NULL | 1468102511-5892 |
| 23 | 136 | 1468228612-9272 |
| 24 | 136 | 1468228612-9272 |
| 25 | NULL | 1468228612-9272 |
+----------+-------------+-----------------+
在每个事件id下,可以有许多具有单个worm\u id的条目(例如134、135等),有时还有一些空条目。
在我的一些条目中-由于底层应用程序中的一个bug-在单个事件\u id中使用了两个唯一的蠕虫\u id(如事件\u id 1468036258-1426)。
我正在尝试构建一个查询,以便在单个事件id下有多个唯一的数字蠕虫id的情况下显示事件id列表。
到目前为止,我想到的是:
SELECT DISTINCT(worm_id), event_id FROM `fruits`
WHERE worm_id IS NOT NULL
AND event_id = '1468036258-1426'
ORDER BY event_id DESC
这将返回以下结果:
+-------------+-----------------+
| worm_id | event_id |
+-------------+-----------------+
| 134 | 1468036258-1426 |
| 135 | 1468036258-1426 |
+-------------+-----------------+
我想在大规模上做这件事,并返回如下结果:
+-----------------+-----------------+
| event_id | worm_ids |
+-----------------+-----------------+
| 1468036258-1426 | 134,135 |
+-----------------+-----------------+
1条答案
按热度按时间tmb3ates1#
使用
group_concat
```SELECT
GROUP_CONCAT(DISTINCT worm_id) AS worm_ids,
event_id
FROM
fruits
WHERE worm_id IS NOT NULL
AND event_id = '1468036258-1426'
SELECT
GROUP_CONCAT(DISTINCT worm_id) AS worm_ids,
event_id
FROM
fruits
WHERE worm_id IS NOT NULL
GROUP BY event_id
SELECT
GROUP_CONCAT(DISTINCT worm_id) AS worm_ids,
event_id
FROM
fruits
WHERE worm_id IS NOT NULL
GROUP BY event_id
HAVING COUNT(DISTINCT worm_id) > 1