Điều gì sai về việc tham gia ngoài SQL đơn giản này?Làm thế nào một phép nối ngoài bên trái B trả về nhiều hàng hơn trong A?
select count(*) from A -- 25766
select count(*) from B -- 1242
select count(*) from A left outer join B on A.b = B.b -- 310176
trả lại 25766, 1242 và 310176 hàng tương ứng. (Điều này là dành cho Microsoft SQL Server 2012.) Làm thế nào có thể A left outer join B
bao giờ trở lại nhiều hàng hơn tồn tại trong A
, đặc biệt là cho this biểu đồ Venn? Tôi đoán tôi đang mắc sai lầm ngu ngốc nhưng nó là gì?
Nó có thể được rằng cột b không phải là toàn bộ chìa khóa? – Jens
+1 Tôi sẽ kiểm tra. Làm thế nào điều này có thể giải thích 310176? – Drux
Nếu b chỉ là một phần của khóa, có thể là một dòng trong A tham chiếu nhiều dòng hơn trong B và nếu trong bản ghi ví dụ 1 của bạn về A tham chiếu 12,0 ... hàng trong B, bạn sẽ nhận được kết quả của mình. – Jens