2013-02-27 113 views
3

我有一个MySQL表,如下所示。我想创建一个查询,根据我的示例中的“seed”计数为每个条目返回多行。这可能在MySQL上吗?从一行查询中的多行MySQL

表:

------------------------------- 
| ID  | Name | Seed | 
| 1  | Entry 1 | 2  | 
| 2  | Entry 2 | 3  | 
| 3  | Entry 3 | 1  | 
| 4  | Entry 4 | 2  | 
------------------------------- 

结果:

ID Name  Seed 
1  Entry 1 2 
1  Entry 1 2 
2  Entry 2 3 
2  Entry 2 3 
2  Entry 2 3 
3  Entry 3 1 
2  Entry 2 2 
2  Entry 2 
+0

你尝试过什么?这是可能的使用游标,创建一个程序等。 – iiro 2013-02-27 06:55:24

+0

我一直在使用谷歌搜索,所有我可以似乎发现是结合多行到一个,一个解决方案使用PHP,但我需要在MySQL中做到这一点。我真的不知道从哪里开始。您是否有任何关于搜索查询或教程的建议? – scholzr 2013-02-27 07:44:39

回答

1

可以引入顺序种子值的另一个表。然后您的查询可以使用> =加入到它。

0

当你需要多行时,你需要整数值,通过它你会多行。所以我的例子将与Subquery which holds integer values

查询:

SQLFIDDLEExample

SELECT t.ID, t.Name, t.Seed 
FROM Table1 t 
LEFT JOIN (SELECT 
    (TWO_1.SeqValue + 
    TWO_2.SeqValue + 
    TWO_4.SeqValue + 
    TWO_8.SeqValue + 
    TWO_16.SeqValue) SeqValue 
FROM 
    (SELECT 0 SeqValue UNION ALL SELECT 1 SeqValue) TWO_1 
    CROSS JOIN (SELECT 0 SeqValue UNION ALL SELECT 2 SeqValue) TWO_2 
    CROSS JOIN (SELECT 0 SeqValue UNION ALL SELECT 4 SeqValue) TWO_4 
    CROSS JOIN (SELECT 0 SeqValue UNION ALL SELECT 8 SeqValue) TWO_8 
    CROSS JOIN (SELECT 0 SeqValue UNION ALL SELECT 16 SeqValue) TWO_16 
)t2 
ON t2.SeqValue < t.SEED 

结果:

| ID | NAME | SEED | 
----------------------- 
| 1 | Entry 1 | 2 | 
| 1 | Entry 1 | 2 | 
| 2 | Entry 2 | 3 | 
| 2 | Entry 2 | 3 | 
| 2 | Entry 2 | 3 | 
| 3 | Entry 3 | 1 | 
| 4 | Entry 4 | 2 | 
| 4 | Entry 4 | 2 |