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

时间:2014-02-01 12:16:29

标签: mysql sql multiple-records

起初我想问候所有用户并为我的英语道歉:)。 我是这个论坛上的新用户。 我有一个关于MySQL查询的问题。 我有表项,可以说2列,例如itemsID和ItemsQty。

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

我需要选择itemsID但重复次数,如第ItemQty列所示。

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; 

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

4 个答案:

答案 0 :(得分:1)

Select DISTINCT 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;

使用 DISTINCT 删除重复项。在此处阅读更多内容 - http://dev.mysql.com/doc/refman/5.0/en/select.html

答案 1 :(得分:1)

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 - &gt;你应该随时设置一个这样的小提琴 - 这会让每个人的生活更轻松!

代码回答 - 选项2

如果没有第二张桌子,MySQL可能不会'干净地'做你想做的事情(虽然有些聪明的人可能知道如何)

使用脚本执行此操作有什么问题?

只需运行SELECT itemsID, ItemsQty FROM table

然后当循环结果时(伪代码没有指定语言)

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

答案 2 :(得分:0)

似乎我理解你的要求与其他人不同,所以我希望我回答你的问题。我基本上会做的是 -

  1. 为这些更改创建一个新表。
  2. 创建一个mysql过程,在原始表中给出一行,在新表中添加新行 - http://dev.mysql.com/doc/refman/5.6/en/loop.html
  3. 对原始表中的每一行运行此过程。

答案 3 :(得分:-1)

尝试此操作以从两列中获取不同的值

SELECT DISTINCT itemsID FROM items
UNION 
SELECT DISTINCT itemsQty FROM items