我需要一个要求我返回如下内容的查询。
data table
--------------------------------
product name | quantity
apple | 3
egg | 2
query expected result
--------------------------------
product name
apple
apple
apple
egg
egg
感谢反馈
更新 #1 好吧,我不好,问题不清楚。我想通过按数量循环我的产品来显示我的结果。可能我对数量的预期结果让人有些困惑。因此,是否可以在mysql中按数量循环我的记录?
最佳答案
如果你真的需要在 SQL 中使用它,你可以利用一个 tally(numbers) 表,你可以像这样创建并填充值 1-100
CREATE TABLE tally(n INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
INSERT INTO tally (n)
SELECT a.N + b.N * 10 + 1 n
FROM
(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
ORDER BY n;
那么你的查询看起来会是
SELECT product_name
FROM data_table d JOIN tally t
ON t.n <= d.quantity
注意:确保您的tally
表中有MAX(n)
值>= MAX(quantity)
在您的 data_table
中以使其正常工作
输出:
+--------------+ | product_name | +--------------+ | apple | | apple | | apple | | egg | | egg | +--------------+
这是 SQLFiddle 演示
关于MySQL按每行数量返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22291814/