Bài học theo mô-đun (1/4)
Danh sách và phạm vi: IN và BETWEEN
Trong các mô-đun trước bạn đã lọc bằng WHERE bằng cách sử dụng các đẳng thức và
so sánh: salary > 30000, department_id = 1, hired_on >= '2020-01-01'.
Nhưng khi điều kiện trở thành "giá trị phải là một trong năm giá trị này",
OR bị xích chồng chất lên nhau:
-- Heavy and fragile: adding a department means touching the query
SELECT first_name, last_name
FROM employees
WHERE department_id = 1
OR department_id = 2
OR department_id = 3;SQL cung cấp hai phím tắt để làm cho phần này có thể đọc được.
TRONG - "một trong số này"
Toán tử IN (...) lấy danh sách các giá trị và trả về true nếu
cột bằng any trong số chúng:
SELECT first_name, last_name, department_id
FROM employees
WHERE department_id IN (1, 2, 3);Nó giống hệt về mặt ngữ nghĩa với OR ở trên, nhưng dễ đọc hơn nhiều: nó
đọc tự nhiên là "nơi department_id nằm trong (1, 2, 3)". Nó cũng hoạt động
với chuỗi và ngày tháng:
SELECT name
FROM departments
WHERE city IN ('Milano', 'Roma');Ngoài ra còn có NOT IN (...), điều ngược lại:
-- Employees who are NOT in Engineering or Sales:
SELECT first_name, last_name
FROM employees
WHERE department_id NOT IN (1, 2);GIỮA - "giữa A và B, bao gồm cả hai"
Khi điều kiện là một phạm vi liên tục (số, ngày), thay vì
đang viết column >= A AND column <= B bạn có BETWEEN A AND B:
-- Employees with a salary between 30000 and 50000 (both inclusive):
SELECT first_name, last_name, salary
FROM employees
WHERE salary BETWEEN 30000 AND 50000;BETWEEN bao gồm trên cả hai điểm cuối. Nó hoạt động rất độc đáo với
ngày quá:
-- Everyone hired in 2020:
SELECT first_name, last_name, hired_on
FROM employees
WHERE hired_on BETWEEN '2020-01-01' AND '2020-12-31';Hãy thử nó
Hiển thị họ (tên), họ (last_name) và mức lương (mức lương) của nhân viên có mức lương từ 30000 đến 50000. Ba cột.
Hiển thị gợi ý
Sử dụng BETWEEN 30000 AND 50000 — nhỏ gọn và dễ đọc hơn hai phép so sánh được nối bằng AND.
Giải pháp khả dụng sau 3 lần thử
Xem lại bài tập
Liệt kê tên (first_name) và họ (last_name) của nhân viên làm việc tại phòng ban 1, 2 hoặc 4 (dùng IN). Sắp xếp theo thứ tự abc theo họ.
Hiển thị gợi ý
WHERE Department_id IN (1, 2, 4) là phiên bản rút gọn của ba OR.
Giải pháp khả dụng sau 3 lần thử