php - MYSQL从范围生成连续数字

标签 php mysql sql

我的 table

教室

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

我想在表中插入数据 座位记录 像这样

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

关于php - MYSQL从范围生成连续数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28298782/

相关文章:

php - 在 PHP 中减去时间

mysql - 将 MySQL 'update' 语句转换为 'insert' 语句

php - SQL查询问题

python - sqlite3.操作错误: database is locked - non-threaded application

php - 调用数组上的成员函数 paginate()

php - Httpful 帖子和 URL 参数

css - 带有中断线的文本在 Rails 中不起作用

php - 创建一个 MYSQL Select 语句,结合来自购物篮和产品表的信息

php - 文本到语音不适用于所有文本(以 php 形式)

php - yii插入语句错误SQLSTATE[HY093] : Invalid parameter number: parameter was not defined