select id,name,total_copies from contacts.
这就是选择语句。因为它可以带回来
结果是
1,john,1
2,peter,3
3,sara,2
我需要它
1,john,1
2,peter,2
2,peter,2
2,peter,2
3,sara,2
3,sara,2
所以简而言之,如果 total_copies = 3 它必须返回行 3 次,如果值为 5 它必须返回行 5 次,依此类推
你可以使用这样的东西:
SELECT contacts.*, n
FROM
(SELECT n1.n*10+n2.n n FROM
(SELECT 0 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) n1,
(SELECT 0 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) n2) numbers
INNER JOIN contacts ON contacts.total_copies>numbers.n
ORDER BY
id
请在此处查看小提琴。带有数字的索引表应该使查询更容易和更快:
CREATE TABLE numbers (n int);
INSERT INTO numbers VALUES (0), (1), (2), (3), (4), (5);
SELECT contacts.*
FROM numbers INNER JOIN contacts
ON contacts.total_copies>numbers.n
ORDER BY id;
这里的例子。