第 3 篇:《WHERE 就是刷选项——像点外卖一样精确筛房!》
🛬 第 3 篇:《WHERE 就是刷选项——像点外卖一样精确筛房!》
关键词:比较运算符、逻辑运算符、模糊匹配、NULL、IN / BETWEEN / LIKE、优先级
🎬 当 SQL 遇上“外卖筛选”
点外卖时,你会勾选:
- 「米粉 / 面条」
- 「¥15 以下」
- 「好评 4.5★ 以上」
后台请求看上去就像:
SELECT * FROM dishes
WHERE category = '面条'AND price < 15AND rating >= 4.5;
今天我们把这种 “刷选项” 的绝招搬到租房场景,用 WHERE 玩转各种筛选!
1️⃣ WHERE 基础语法
SELECT 列1, 列2 …
FROM 表名
WHERE 条件1 [AND/OR 条件2 …];
- 比较运算符:
= <> > < >= <=
- 逻辑运算符:
AND OR NOT
- 优先级:
NOT > AND > OR
(跟乘除加减很像)
2️⃣ 单条件筛选
目标 | SQL | 解释 |
---|---|---|
看价格< 2000 的房子 | WHERE price < 2000 | 便宜才是王道 |
看三居室 | WHERE type = '三居' | 精准锁定 |
3️⃣ 组合条件:AND / OR
情景:想在 天河 找 ≤ 2500 元 的房子
SELECT title, price
FROM houses
WHERE district = '天河'AND price <= 2500;
情景:要么 天河,要么 海珠 的三居室
WHERE (district = '天河' OR district = '海珠')AND type = '三居';
✅ 括号一定要加,防止优先级踩坑!
4️⃣ IN、BETWEEN、LIKE:三大神器
语法 | 用途 | 例子 |
---|---|---|
IN (…) | 多选一 | district IN ('天河','越秀','海珠') |
BETWEEN a AND b | 范围闭区间 | price BETWEEN 2000 AND 3000 |
LIKE + % | 模糊匹配 | title LIKE '%精装修%' |
5️⃣ 处理 NULL:IS NULL / IS NOT NULL
有些房源没填面积,想找出这些“神秘房”:
WHERE area IS NULL;
6️⃣ 实战:五个小练习
-
找 40–60 ㎡,价格 2000–3000 的两居
SELECT * FROM houses WHERE type = '两居'AND area BETWEEN 40 AND 60AND price BETWEEN 2000 AND 3000;
-
标题包含“地铁口”或“电梯”,且 ≤ 3500 元
WHERE price <= 3500AND (title LIKE '%地铁口%' OR title LIKE '%电梯%');
-
天河或黄埔区,排除三居
WHERE district IN ('天河','黄埔')AND type <> '三居';
-
面积字段为 NULL 的房源
WHERE area IS NULL;
-
价格最高的前 3 套房子(预告 ORDER BY)
SELECT * FROM houses ORDER BY price DESC LIMIT 3;
🧠 记忆口令
WHERE 来筛选,
AND 都满足,
OR 选其一,
NOT 来排除,
IN 多选项,
BETWEEN 范围住,
LIKE 模糊搜,
NULL 莫忽略。
🚀 下期预告
ORDER BY 让你妈喊你排队吃饭!
下一篇我们聊 排序 —— 谁更贵?谁面积最大?一条 SQL 全搞定。
顺带教你用 LIMIT
做“今日 Top 10 热门房源”榜单。