繁体   English   中英

MYSQL从范围生成连续数字

[英]MYSQL generate consecutive numbers from range

我的桌子

课堂

id  class   no_of_seats start_seat_no   end_seat_no
1   A1      3           105             107
2   A2      2           108             109
3   A3      2           110             111

想像这样在表seat_records中插入数据

id  class   seat_no
1   A1      105
2   A1      106
3   A1      107
4   A2      108
5   A2      109
6   A3      110
7   A3      111
8   A3      112

尝试完成先前问题中给出的所有操作,但均失败。

SELECT 'A1' class, 105 start_seat_no, 107 end_seat_no
    UNION ALL
    SELECT 'A2',108,109
From classRoom

您需要整数源来进行联接。 如果您有足够的行,则可以使用相同的表和变量:

insert into seat_records(class, seat_no)
    select class, cr.start_seat_no + n.n - 1
    from ClassRoom cr join
         (select @rn := @rn + 1 as n
          from ClassRoom cross join
               (select @rn := 0) vars
         ) n
         on cr.start_seat_no + n.n - 1 <= cr.end_seat_no;

您应该将id本身添加为自动递增列。 这样,它将在输入中设置。 如果您确实想在输入中进行设置,则还可以使用变量:

insert into seat_records(id, class, seat_no)
    select @id := @id + 1, class, cr.start_seat_no + n.n - 1
    from ClassRoom cr join
         (select @rn := @rn + 1 as n
          from ClassRoom cross join
               (select @rn := 0) vars
         ) n
         on cr.start_seat_no + n.n - 1 <= cr.end_seat_no cross join
         (select @id := 0) vars

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM