根据左联接号重复行X次

时间:2019-12-03 18:57:46

标签: mysql sql duplicates

我有一张桌子(订阅)

OrderId | Plan value    
   1    |    A 
   2    |    B    
   3    |    C    
   4    |    A
  ...   |   ...

我有我的左联接表(计划值)

Plan Value ID | Value    
   A          |    2
   B          |    4    
   C          |    1    

我的输出表必须是:

OrderId | Plan value  
   1    |    A 
   1    |    A 
   2    |    B 
   2    |    B  
   2    |    B  
   2    |    B  
   3    |    C     
   4    |    A
   4    |    A

我想根据“值”结果中的左联接号来复制X倍的OrderID行。

谢谢!

1 个答案:

答案 0 :(得分:0)

您需要数字表或递归CTE。假设一个表有足够的行,您可以即时生成一个数字表:

select s.order_id, s.plan_value
from subscriptions s join
     plans p
     on s.plan_value = p.plan_value_id join
     (select row_number() over () as seqnum
      from subscriptions
      limit 100 -- or the maximum
     ) n
     on n.seqnum <= p.value;