首页 > 解决方案 > 根据左连接数重复行 X 次

问题描述

我有一张桌子(订阅)

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 行。

提前致谢!

标签: mysqlsqlduplicates

解决方案


您需要一个数字表或递归 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;

推荐阅读