【问题标题】:Loop insert with select带选择的循环插入
【发布时间】:2020-05-08 03:45:13
【问题描述】:

我有以下结构

门票

+----+---------------------+-----------+---------------+
| id | price               | seat_id   |    flight_id  |
+----+---------------------+-----------+---------------+

座位

+----+--------+-----------+
| id | letter |  number   |
+----+--------+-----------+
| 1  | A      |     1     |
| 2  | A      |     2     |
| 3  | A      |     3     |
+----+--------+-----------+

我想只使用一个查询插入 2 张票,其中字母为 A,数字介于 1 和 2 之间,我想一次插入超过 1 个我必须使用一些 plsql 循环,但我不知道怎么做,我不知道这是不是方法

【问题讨论】:

    标签: postgresql sql-insert


    【解决方案1】:

    不确定您实际上想要做什么,但根据您的描述,我假设您需要 2 行票证,从座位上引用 id 1 和 2。
    SQL 在集合中工作,而不是在单独的行和循环中(是的,可以通过 plpgsql 获得),但尽可能避免循环。插入2行不需要1行;事实上,它几乎与插入单行完全相同。由于您没有指定价格和航班的值,我将省略它们。但要插入 2 行:

    Insert into tickets(id,seat_id) values (1,1),(2,2);
    

    【讨论】:

    • 2票只是一个例子,我真的想要X票,为什么要避免使用循环?
    • 那就看看How to Ask吧。这将描述一个问题需要什么才能获得满意。在这种情况下,您专门询问 2 行,而没有其他任何指示。您需要具体的描述,您的样本数据可以减少。循环基本上是 SQL 的对立面。它们也是最慢的方法,然后是更复杂的过程。实际上,SQL 中不存在循环。 PLpgsql (Postgres), plsql (Oracle), T-SQL (Sequel Server) 是集成 SQL 的第三代语言。
    猜你喜欢
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多