Avatar
0
tvd12 Enlightened
tvd12 Enlightened
Sự khác biệt giữa Join Where và Join And
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:
<img src="https://stackask.com/wp-content/uploads/2022/12/Screenshot-2022-12-04-at-18.47.29.png" alt="" class="alignnone size-full wp-image-8797" />
Bảng linkedin:
<img src="https://stackask.com/wp-content/uploads/2022/12/Screenshot-2022-12-04-at-18.48.23.png" alt="" class="alignnone size-full wp-image-8798" />
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à:
<img src="https://stackask.com/wp-content/uploads/2022/12/Screenshot-2022-12-04-at-18.49.32.png" alt="" class="alignnone size-full wp-image-8799" />
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à:
<img src="https://stackask.com/wp-content/uploads/2022/12/Screenshot-2022-12-04-at-18.50.31.png" alt="" class="alignnone size-full wp-image-8800" />
Vì sao vậy?
  • Answer
sql join
Remain: 5
1 Answer
Avatar
tvd12 Enlightened
tvd12 Enlightened
Câu lệnh 1 dịch ra tiếng Việt là: lọc ra các bản ghi của bảng facebook có thành phố là SF và sau đó liên kết với bảng linkedin, như vậy sẽ chỉ có 1 bản ghi.
Câu lệnh 2 dịch ra tiếng Việt là: Lấy ra tất cả các bản ghi của bảng facebook nhưng chỉ liên kết với bảng linkedin khi facebook.city là SF thôi, vậy thì ở câu lệnh 2 mặc dù lấy ra hết bản ghi nhưng chỉ bản ghi có city là SF thì mới có thêm thông tin của linkedin. Nên em sẽ thấy ở bản ghi Dave không hề có thông tin của name và city của linkedin, nếu em truy vấn thế này:
SELECT *
FROM facebook
LEFT JOIN linkedin
ON facebook.name = linkedin.name
Thì sẽ có thông tin name và city của linked cho Dave như hình dưới đây:
<img src="https://stackask.com/wp-content/uploads/2022/12/Screenshot-2022-12-04-at-18.54.26.png" alt="" class="alignnone size-full wp-image-8805" />
  • 0
  • Reply