bạn có thể làm
SELECT *
from members
UNION
SELECT inventory.*, 'dummy1' AS membersCol1, 'dummy2' AS membersCol2
from inventory;
đâu membersCol1
, membersCol12
, vv ... là những cái tên của các cột từ members
mà không phải là trong inventory
. Bằng cách đó, cả hai truy vấn trong liên minh sẽ có cùng cột (Giả sử rằng tất cả các cột trong inventory
giống như trong members
dường như rất lạ đối với tôi ... nhưng hey, đó là lược đồ của bạn).
CẬP NHẬT:
Như HLGEM chỉ ra, điều này sẽ chỉ việc nếu inventory
có các cột có tên giống như members
, và theo thứ tự. Đặt tên tất cả các cột một cách rõ ràng là ý tưởng tốt nhất, nhưng vì tôi không biết tên tôi không thể làm chính xác điều đó. Nếu tôi đã làm, nó có thể trông giống như thế này:
SELECT id, name, member_role, member_type
from members
UNION
SELECT id, name, '(dummy for union)' AS member_role, '(dummy for union)' AS member_type
from inventory;
tôi không thích sử dụng NULL cho các giá trị giả vì sau đó nó không phải luôn luôn rõ ràng đó là một phần của sự kết hợp một kỷ lục đến từ - sử dụng 'giả' làm cho nó rõ ràng rằng hồ sơ là từ một phần của công đoàn mà không có hồ sơ đó (mặc dù đôi khi điều này có thể không quan trọng). Ý tưởng kết hợp hai bảng này dường như rất lạ đối với tôi bởi vì tôi rất nghi ngờ họ sẽ có nhiều hơn 1 hoặc 2 cột cùng tên, nhưng bạn hỏi câu hỏi theo cách mà tôi tưởng tượng trong kịch bản của bạn bằng cách nào đó có ý nghĩa.
Tại sao bạn muốn kết hợp hai bảng ngữ cảnh hoàn toàn khác nhau? – Joe
Bạn không bao giờ sử dụng lựa chọn * trong bất kỳ truy vấn nào sẽ chạy trên sản xuất. Bạn nên luôn luôn chỉ định các cột bạn cần cho cả bảo trì và hiệu suất. – HLGEM