起初我想问候所有用户并为我的英语道歉:)。 我是这个论坛上的新用户。 我有一个关于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;
但它无法正常工作。 在此先感谢您的帮助。
答案 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)
似乎我理解你的要求与其他人不同,所以我希望我回答你的问题。我基本上会做的是 -
答案 3 :(得分:-1)
尝试此操作以从两列中获取不同的值
SELECT DISTINCT itemsID FROM items
UNION
SELECT DISTINCT itemsQty FROM items