在我的数据库中,我必须选择一个这样的查询。
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 |
+-----------+---------------------------------------+
如果我有这样的情况,该用什么关键字。 请告知。
答案 0 :(得分:0)
没有真正简单的方法来拆分SQL中的值列表。您可以省略GROUP_CONCAT并获得相似的结果,但是LIMIT必须有所不同才能获得相同的结果。最简单的方法可能是更改@rownum的递增方式,以便仅在更改先前值(barang.arrival_day,barang.carrier)后才递增,并在@rownum <= 5上过滤结果。