PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak wstawić wiele wierszy z kluczem obcym przy użyciu CTE w Postgresie?

Poniżej znajduje się rozsądna interpretacja tego, co chcesz zrobić:

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;

Podstawowa odpowiedź brzmi:„użyj returning * i użyj join aby uzyskać wartości”. Musiałem zmienić tytuły, aby były unikalne.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd uwierzytelnienia hasła podczas uruchamiania migracji laravel

  2. Usuń obiekty z zapytania, jeśli Brak lub Null

  3. String_agg dla wielu kolumn

  4. WYJAŚNIENIE PostgreSQL – Jakie są koszty zapytań?

  5. Wykonaj aktualizację alembika w wielu schematach