Cho 2 bảng thế này:
CREATE TABLE `facebook` (
`name` varchar(45) NOT NULL,
`city` varchar(45) DEFAULT NULL,
PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
CREATE TABLE `linkedin` (
`name` varchar(45) NOT NULL,
`city` varchar(45) DEFAULT NULL,
PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
Với dữ liệu thế này:
Bảng facebook:
Bảng linkedin:
Thì câu truy vấn join where này:
SELECT *
FROM facebook
LEFT JOIN linkedin
ON facebook.name = linkedin.name
WHERE facebook.city = 'SF';
Lại cho kết quả là:
Trong khi sử dụng join and:
SELECT *
FROM facebook
LEFT JOIN linkedin
ON facebook.name = linkedin.name AND facebook.city = 'SF';
Lại cho kết quả là:
Vì sao vậy?