2013-04-17 24 views
0
select id,name,total_copies from contacts. 

這就是select語句。正如它可以帶回mysql返回數量取決於領域的線索

結果是

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次等

回答

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 

請參閱小提琴here。用數字索引的表應進行查詢easyer更快:

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; 

here