在一个select MySql查询中复制行
首先,我想问候所有用户,并为我的英语道歉:。 我是这个论坛的新用户。 我有一个关于MySQL查询的问题。 我有两列的表项,例如itemsID和ItemsQty在一个select MySql查询中复制行,mysql,sql,multiple-records,Mysql,Sql,Multiple Records,首先,我想问候所有用户,并为我的英语道歉:。 我是这个论坛的新用户。 我有一个关于MySQL查询的问题。 我有两列的表项,例如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
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;
但它不能正常工作。
提前感谢您的帮助。尝试此操作可从两列中获得不同的值
SELECT DISTINCT itemsID FROM items
UNION
SELECT DISTINCT itemsQty FROM items
使用DISTINCT删除重复项。在这里阅读更多-似乎我对你的问题的理解与其他人不同,所以我希望我能回答你的问题。我基本上会做的是- 为这些更改创建一个新表。 创建一个mysql过程,在原始表中给定一行,然后向新表添加新行- 对原始表中的每一行运行此过程。 SQL答案-选项1 您需要另一个名为numbers的表,其中ItemsQuantity的最大值为1
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
看到->你应该总是设置这样的小提琴当你可以-它使每个人的生活更轻松
代码回答-选项2
如果没有第二个表,MySQL可能不会“干净地”做你想做的事情,尽管一些聪明人可能知道如何做
用脚本做这件事有什么错
只需从表中运行selectitemsid、ItemsQty
然后,当循环遍历结果时,只需执行伪代码,因为没有指定语言
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
等等。您尝试过distinct吗?谢谢您的回答。我不能使用distinct,因为我需要记录的副本,但需要多次指示列itemsQty。我需要打印特殊标签,所以我需要从第一张唱片中打印2个标签,第二条记录中的3个标签等。只需使用脚本即可-我已经回答了下面的问题-如果您指定了一种语言,并且我知道它,我可以调整我的答案,尽管我的伪代码可能会帮助您,如果您以前编程过OK,请使用MySQL,但您需要另一个表才能正常工作。请参阅更新的答案谢谢您的回答。我不能使用distinct,因为我需要记录的副本,但需要多次指示列itemsQty。我需要打印特殊标签,所以我需要让我说,从第一个记录2标签,从第二个记录等3标签。啊,是的。让我想想,谢谢你的回答。我需要打印特殊的标签,所以我需要让我说,从第一个记录2标签,从第二个记录等3个标签。我正在尝试使用水晶报告。打印将经常用于选定的记录,所以我需要最简单的解决方案。非常感谢!第一个选择是伟大的解决方案!
0 => 11
1 => 11
2 => 12
3 => 12
4 => 12
5 => 13