🛬 第 3 篇:《WHERE 就是刷选项——像点外卖一样精确筛房!》

61 阅读2分钟

🛬 第 3 篇:《WHERE 就是刷选项——像点外卖一样精确筛房!》

关键词:比较运算符、逻辑运算符、模糊匹配、NULL、IN / BETWEEN / LIKE、优先级

🎬 当 SQL 遇上“外卖筛选”

点外卖时,你会勾选:

  • 「米粉 / 面条」
  • 「¥15 以下」
  • 「好评 4.5★ 以上」

后台请求看上去就像:

SELECT * FROM dishes
WHERE category = '面条'
  AND price < 15
  AND rating >= 4.5;

今天我们把这种 “刷选项” 的绝招搬到租房场景,用 WHERE 玩转各种筛选!


1️⃣ WHERE 基础语法

SELECT1, 列2FROM   表名
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️⃣ 实战:五个小练习

  1. 找 40–60 ㎡,价格 2000–3000 的两居

    SELECT * FROM houses
    WHERE type = '两居'
      AND area BETWEEN 40 AND 60
      AND price BETWEEN 2000 AND 3000;
    
  2. 标题包含“地铁口”或“电梯”,且 ≤ 3500 元

    WHERE price <= 3500
      AND (title LIKE '%地铁口%' OR title LIKE '%电梯%');
    
  3. 天河或黄埔区,排除三居

    WHERE district IN ('天河','黄埔')
      AND type <> '三居';
    
  4. 面积字段为 NULL 的房源

    WHERE area IS NULL;
    
  5. 价格最高的前 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 热门房源”榜单。