将记录中的字符串分解为新记录mysql

时间:2018-08-03 17:30:00

标签: mysql select

在我的数据库中,我必须选择一个这样的查询。

mysql> SELECT
    -> @rownum := @rownum + 1 as id,
    -> GROUP_CONCAT(DISTINCT id SEPARATOR ", ") as container_ids
    ->
    -> FROM barang
    -> CROSS JOIN (SELECT @rownum := 0) r
    ->
    -> GROUP BY barang.arrival_day, barang.carrier
    -> ORDER BY barang.arrival_day ASC
    ->
    -> LIMIT 5;
+-----------+---------------------------------------+
| item_id   | container_ids                         |
+-----------+---------------------------------------+
|    1      | 1, 2                                  |
|    2      | 3                                     |
|    3      | 4                                     |
|    4      | 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 |
|    5      | 16, 17                                |
+-----------+---------------------------------------+
5 rows in set (0.00 sec)

我的目标是再次操纵查询,以便获得这样的结果,

+-----------+----------------------------------------+
| item_id   | container_ids                          |
+-----------+----------------------------------------+
|    1      | 1                                      |
|    1      | 2                                      |
|    2      | 3                                      |
|    3      | 4                                      |
|    4      | 5                                      |
|    4      | 6                                      |
|    4      | 7                                      |
|    4      | 8                                      |
|    4      | 9                                      |
|    4      | 10                                     |
|    4      | 11                                     |
|    4      | 12                                     |
|    4      | 13                                     |
|    4      | 14                                     |
|    4      | 15                                     |
|    5      | 16                                     |
|    5      | 17                                     |
+-----------+---------------------------------------+

如果我有这样的情况,该用什么关键字。 请告知。

1 个答案:

答案 0 :(得分:0)

没有真正简单的方法来拆分SQL中的值列表。您可以省略GROUP_CONCAT并获得相似的结果,但是LIMIT必须有所不同才能获得相同的结果。最简单的方法可能是更改@rownum的递增方式,以便仅在更改先前值(barang.arrival_day,barang.carrier)后才递增,并在@rownum <= 5上过滤结果。