sql >> データベース >  >> RDS >> PostgreSQL

PostgresでCTEを使用して外部キーで複数の行を挿入するにはどうすればよいですか?

    以下は、あなたがやりたいことの合理的な解釈です:

    with i as (
          insert into products (title, description, price)
              values ('Dope product 1', 'Buy diz', 9.99),
                     ('Dope product 2', 'Buy diz', 8.99),
                     ('Dope product 3', 'Buy diz', 7.99)
              returning *
         ) 
    insert into product_metadata (product_id, sales_volume, date)
        select i.product_id, v.sales_volume, v.date
        from (values ('Dope product 1', 80, '2017-03-21'),
                     ('Dope product 2', 50, '2017-03-21'), 
                     ('Dope product 3', 70, '2017-03-21')
             ) v(title, sales_volume, date) join
             i
             on i.title = v.title;
    

    基本的な答えは、「returning *を使用する」です。 joinを使用します 値を取得するには」。一意になるようにタイトルを変更する必要がありました。



    1. Oracleの左外部結合クエリ

    2. このスレッドローカルFlask-SQLAchemyセッションにより、MySQLサーバーがなくなったというエラーが発生しますか?

    3. 複数の行を1つのMySQL結合に結合します

    4. PHPに改行を読み取らせて として返す方法