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ạngSELECT INTO
này không khả dụng trong ECPG hoặc PL / pgSQL, vì chúng diễn giảiINTO
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ởiSELECT 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.