gpt4 book ai didi

mysql - 在一个选择的 MySql 查询中复制行

转载 作者:行者123 更新时间:2023-11-29 13:15:39 24 4
gpt4 key购买 nike

首先,我想向所有用户问好,并为我的英语道歉:)。我是这个论坛的新用户。我有一个关于 MySQL 查询的问题。我的 Items 表有 2 列,例如 itemsID 和 ItemsQty。

itemsID ItemsQty
11 2
12 3
13 3
15 5
16 1

我需要选择 itemsID,但按照 ItemsQty 列中指示的次数重复。

itemsID ItemsQty
11 2
11 2
12 3
12 3
12 3
13 3
13 3
13 3
15 5
15 5
15 5
15 5
15 5
16 1

我尝试了该查询:

SELECT items.itemsID, items.itemsQty

FROM base.items

LEFT OUTER JOIN
(

SELECT items.itemsQty AS Qty FROM base.items

) AS Numbers ON items.itemsQty <=Numbers.Qty

ORDER BY items.itemsID;

但它无法正常工作。预先感谢您的帮助。

最佳答案

SQL 答案 - 选项 1

您需要另一个名为 numbers 的表,其中的数字从 1 到 ItemsQuantity 的最大值

Table: NUMBERS

1
2
3
4
5
......
max number for ItemsQuantity

然后下面的 SELECT 语句将起作用

SELECT ItemsID, ItemsQty
FROM originaltable
JOIN numbers
ON originaltable.ItemsQty >= numbers.number
ORDER BY ItemsID, number

参见this fiddle -> 如果可以的话,你应该总是设置一个这样的 fiddle - 它让每个人的生活更轻松!!!

代码答案 - 选项 2

如果没有第二个表,MySQL 可能不会“干净地”做你想做的事(尽管一些聪明的人可能知道如何做)

用脚本来做有什么问题吗?

只需运行SELECT itemsID, ItemsQty FROM 表

然后,当循环结果时,只需执行(伪代码,因为未指定语言)

newArray = array();  // new array

While Rows Returned from database{ //loop all rows returned

loop number of times in column 'ItemsQty'{

newArray -> add 'ItemsID'


}


}//end of while loop

这将为您提供一个新数组

0 => 11

1 => 11

2 => 12

3 => 12

4 => 12

5 => 13

等等

关于mysql - 在一个选择的 MySql 查询中复制行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21497913/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com