0
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 次,依此类推

4

1 回答 1

0

你可以使用这样的东西:

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;

这里的例子。

于 2013-04-17T20:10:26.863 回答