PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Kết hợp hai bảng thành một bảng mới để các hàng được chọn từ bảng kia bị bỏ qua

UNION chỉ đơn giản là không làm những gì bạn mô tả. Truy vấn này nên:

CREATE TABLE AS 
SELECT date, location_code, product_code, quantity
FROM   transactions_kitchen k

UNION  ALL
SELECT h.date, h.location_code, h.product_code, h.quantity
FROM   transactions_admin h
LEFT   JOIN transactions_kitchen k USING (location_code, date)
WHERE  k.location_code IS NULL;

LEFT JOIN / IS NULL để loại trừ các hàng khỏi bảng thứ hai cho cùng một vị trí và ngày tháng. Xem:

  • Chọn các hàng không có trong bảng khác

Sử dụng CREATE TABLE AS thay vì SELECT INTO . Hướng dẫn sử dụng:

CREATE TABLE AS có chức năng tương tự như SELECT INTO . CREATE TABLE AS là cú pháp được đề xuất, vì dạng SELECT INTO này không khả dụng trong ECPG hoặc PL / pgSQL, vì chúng diễn giải INTO mệnh đề khác nhau. Hơn nữa, CREATE TABLE AS cung cấp tập hợp các chức năng được cung cấp bởi SELECT INTO .

Hoặc, nếu bảng mục tiêu đã tồn tại:

INSERT INTO transactions_combined (<list names of target column here!>)
SELECT ...

Ngoài ra:Tôi sẽ không sử dụng date như tên cột. Đó là một từ dành riêng trong mọi tiêu chuẩn SQL và một hàm và tên kiểu dữ liệu trong Postgres.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tham gia truy vấn chỉ với các cột có tất cả các giá trị trong mệnh đề `in`

  2. Quyền thu hồi PostgreSQL từ bảng pg_catalog

  3. Tổng hợp kết nối PostgreSQL:Phần 4 - PgBouncer so với Pgpool-II

  4. Docker - Làm cách nào để chạy lệnh psql trong vùng chứa postgres?

  5. Có cách nào để tải dữ liệu văn bản vào cơ sở dữ liệu trong PostgreSQL không?