Giúp tôi hiểu điều này: Trong hướng dẫn sqlzoo cho câu hỏi 3a ("Tìm quốc gia lớn nhất trong từng khu vực"), tại sao gắn 'AND population> 0' vào câu lệnh lồng nhau SELECT thực hiện điều này đúng?SQL: Mệnh đề WHERE dự phòng xác định cột là> 0?
Trả lời
Lý do là vì:
AND population > 0
... được lọc ra hàng null cho khu vực "Châu Âu", tên "Vatican", mà làm phức tạp:
WHERE population >= ALL (SELECT population
FROM ...)
. ..bởi vì NULL không phải là giá trị, vì vậy, Nga sẽ không được xếp hạng đúng. Toán tử ALL yêu cầu giá trị bạn so sánh lớn hơn hoặc bằng TẤT CẢ các giá trị được trả về từ truy vấn con, điều này không bao giờ có thể xảy ra khi có NULL trong đó.
truy vấn của tôi sẽ đã hoặc:
SELECT region, name, population
FROM bbc x
WHERE population = (SELECT MAX(population)
FROM bbc y
WHERE y.region = x.region)
... hoặc, sử dụng lệnh JOIN:
SELECT x.region, x.name, x.population
FROM bbc x
JOIN (SELECT y.region,
MAX(y.population) AS max_pop
FROM bbc y
GROUP BY y.region) z ON z.region = x.region
AND z.max_pop = x.population
Không, không. Quốc gia lớn nhất có dân số không phải là người ưu tiên.
Giống như kiểm tra xem một cuốn sách lớn nhất có bất kỳ trang nào trong đó hay không.
Tôi nghĩ rằng đó là điểm của câu hỏi @ Hamster của - một phần của mệnh đề là trong ví dụ được đưa ra trên trang web SQLzoo – sasfrog
Ngoài ra truy vấn trả về các kết quả khác nhau nếu bạn bỏ qua mệnh đề "> 0". –
Có vẻ như Nga bị mất tích mà không có nó. Tôi không thể hiểu tại sao điều đó có thể xảy ra. – Hamster
- 1. Kết hợp hai cột trong SQL cho mệnh đề WHERE
- 2. SQL Coalesce trong mệnh đề WHERE
- 3. truy vấn SQL mệnh đề where
- 4. SQL COUNT với mệnh đề WHERE
- 5. LINQ 2 SQL - Generic mệnh đề where
- 6. GIỚI HẠN SQL với mệnh đề WHERE
- 7. T-SQL tương đương với oracle sql mệnh đề where với nhiều cột
- 8. LINQ to SQL - loại nullable trong mệnh đề where
- 9. SQL: sử dụng mệnh đề WHERE trong OVER()?
- 10. Cách sử dụng cột tạm thời trong mệnh đề where
- 11. xpath mệnh đề where
- 12. SQL Và NULL Giá trị trong mệnh đề where
- 13. Cột Bí danh trong một mệnh đề where
- 14. SQL - LEFT OUTER JOIN và mệnh đề WHERE
- 15. LEFT OUTER JOIN với mệnh đề WHERE
- 16. LINQ to SQL MAX trong mệnh đề WHERE
- 17. Thêm mệnh đề WHERE vào SQL động/lập trình
- 18. TSQL - Dùng Chọn Cột nguồn gốc trong mệnh đề where
- 19. Truy vấn MySQL - nhiều mệnh đề WHERE trên 1 cột
- 20. Tính cột trong mệnh đề where - hiệu suất
- 21. tuyên bố trường hợp trong mệnh đề where - SQL Server
- 22. LIKE và NULL trong mệnh đề WHERE trong SQL
- 23. Có thể có mệnh đề WHERE sau mệnh đề HAVING?
- 24. Lỗi tên cột không hợp lệ trong mệnh đề WHERE, cột được chọn với CASE
- 25. Câu lệnh SQL: IF trong mệnh đề WHERE
- 26. sử dụng CASE trong T-SQL trong mệnh đề where?
- 27. SQL select Đặc biệt với mệnh đề where
- 28. IS NULL vs = NULL trong mệnh đề where + SQL Server
- 29. SQL: Tính riêng biệt trong mệnh đề where?
- 30. T-SQL và mệnh đề% Parameter% WHERE LIKE% Parameter%
OH vì vậy Châu Âu là khu vực duy nhất có giá trị dân số NULL. Tôi hiểu rồi. – Hamster
@Hamster: Vâng, nếu không bạn cũng sẽ thấy các khu vực khác bỏ học. Toán tử ALL yêu cầu giá trị bạn so sánh lớn hơn hoặc bằng TẤT CẢ các giá trị được trả về từ truy vấn con, điều này không bao giờ có thể xảy ra khi có NULL trong đó. –
Có tùy chọn NOT NULL nào không? Điều đó sẽ có ý nghĩa hơn nhiều, có thể. – Hamster