WHERE 条件过滤
使用比较运算符、AND/OR/NOT、BETWEEN、IN 过滤数据
WHERE 条件过滤
SELECT 不加条件会返回全部数据——大部分时候你只想要符合某些条件的行。WHERE 就是做这个的。
学完本章你将: 掌握比较运算、AND/OR、BETWEEN、IN。
比较运算符
sql
-- = 等于
SELECT * FROM users WHERE age = 25;
-- <> 或 != 不等于
SELECT * FROM users WHERE city <> '北京';
-- > < >= <=
SELECT name, age FROM users WHERE age > 20;
AND / OR —— 组合条件
sql
-- AND:两个条件都要满足
SELECT * FROM users WHERE age >= 18 AND city = '北京';
-- OR:满足任意一个
SELECT * FROM users WHERE city = '北京' OR city = '上海';
-- 注意优先级:AND 高于 OR,不确定时加括号!
SELECT * FROM users WHERE (city = '北京' OR city = '上海') AND age > 20;
BETWEEN —— 范围的简洁写法
sql
-- 查年龄在 18 到 30 之间的用户
SELECT * FROM users WHERE age BETWEEN 18 AND 30;
-- 等价于:WHERE age >= 18 AND age <= 30
-- 日期范围
SELECT * FROM orders WHERE created_at BETWEEN '2024-01-01' AND '2024-12-31';
IN —— 匹配多个值
sql
-- 查这几个城市
SELECT * FROM users WHERE city IN ('北京', '上海', '广州');
-- 等价于:WHERE city = '北京' OR city = '上海' OR city = '广州'
-- NOT IN —— 不在这几个之中
SELECT * FROM users WHERE city NOT IN ('北京', '上海');
💡 用 IN 代替多个 OR: 3-5 个值用 IN 更清晰,几十个值考虑用子查询。