带范围的 SQL-CTE 请求查询

问题描述 投票:0回答:1

我有表 GetTicketNumbers

   i    UID                                 TicketNumber
   2    09901a22c7c3acc6786847c775f1d113    10
   6    00dad28bef21f916240d6e8c1c1bd67d    5
  12    00dad28bef21f916240d6e8c1c1bd67d    20

我需要生成35行(UID也必须出现在结果中,因为这只是一张表,并且该表需要在上层加入)

             10 sequence number started from 1 (row i=2)
  than next   5  sequence number               (row i=6)
  than next  20 sequence number                (row i=12)

我需要这样的东西,但没有完成这个查询

 With RECURSIVE cte (i, UID, TicketNumbers) as
 (
     Select i, UID, TicketNumbers from GetTicketNumbers 
     union all
     Select i + 1, UID, TicketNumbers from cte where ?????
 ) select * from cte order by i;

我使用MySQL。

sql mysql sql-cte
1个回答
0
投票

添加 RowNo + 1 直到 RowNo 达到 TicketNumber

WITH RECURSIVE CTE AS (
    SELECT i, UID, TicketNumber, 1 AS RowNo FROM TicketData
    UNION ALL
    SELECT i, UID, TicketNumber, RowNo+1 
    FROM CTE c
    WHERE RowNo < TicketNumber
)
SELECT *, ROW_NUMBER() OVER (ORDER BY i,RowNo) as TotalRowNumber
FROM CTE;

db<>小提琴

© www.soinside.com 2019 - 2024. All rights reserved.