mysql - MariaDB 10.0:根据列值将 1 行拆分为多行
问题描述
我有一个看起来像这样的表:
| id | item | count |
| --- | ------ | ----- |
| 1 | item a | 3 |
| 2 | item b | 2 |
| 3 | item c | 4 |
如何查询数据库以便每个计数显示 1 行?即像这样:
| id | item | count |
| --- | ------ | ----- |
| 1 | item a | 3 |
| 1 | item a | 3 |
| 1 | item a | 3 |
| 2 | item b | 2 |
| 2 | item b | 2 |
| 3 | item c | 4 |
| 3 | item c | 4 |
| 3 | item c | 4 |
| 3 | item c | 4 |
如果有帮助,我创建了一个数据库小提琴:https ://www.db-fiddle.com/f/wRZgBYkDM18c5fk7tgkBkA/0
解决方案
下面的查询很丑但有效:
SELECT id, item, count
FROM (
SELECT @curRow := @curRow + 1 AS row_number FROM mytable
INNER JOIN (SELECT @curRow := 0) AS ROW
ON @curRow < (SELECT max(count) from mytable)
) AS B LEFT JOIN mytable C ON B.row_number <= C.count
注意:仅当表中的记录总数 => max(count) 时,它才会返回正确的数据。
在此处的答案中找到原始方法
推荐阅读
- javascript - 反应钩子状态 - 不更新组件
- javafx - 使用 Javafx 的空白窗口
- python - 使用 Python 将大型 CSV 文件转换为多个 JSON 文件
- mysql - 加载数据 infile 截断数据
- square-connect - squareup 如何使用测试随机数将卡片保存在将被拒绝的文件中
- css - 如何在 qooxdoo 中动态加载 CSS 文件
- python - 在python中错误地使用for
- types - `changeset()` 规范要求逻辑上不可为空的可空类型
- r - % 错误的问题:stargazer R 包中无法识别的对象类型
- android-studio - 未部署任何内容时在 Android Studio 中显示正确的气泡