[特殊字符] 第9篇:《SQL高阶 SELECT 技巧:DISTINCT、ORDER BY、LIMIT 全家桶》

发布于:2025-07-28 ⋅ 阅读:(15) ⋅ 点赞:(0)

🎬 开场白:你以为 SELECT * 就够用了?

初学 SQL 的时候,大多数人都是从这句开始的:

SELECT * FROM 表名;

但现实的业务需求远远不止 “把所有都查出来”。
你可能会遇到:

  • 查不重复的城市
  • 看最贵的前3套房
  • 只展示第一页的10条房源
  • 按价格从高到低排序结果
    这些事,全靠 SELECT 的"全家桶组合技"。

🍱 本期菜单

功能 关键字 用法举例
去重查询 DISTINCT SELECT DISTINCT district
排序 ORDER BY ORDER BY price DESC
限制条数 LIMIT LIMIT 5
排名前几 LIMIT + ORDER BY ORDER BY xxx LIMIT n
分页 LIMIT + OFFSET LIMIT 10 OFFSET 20

1️⃣ DISTINCT:去掉重复值

你只想知道有哪些区域,不想看到重复项?

SELECT DISTINCT district
FROM houses;

📌 只返回不重复的 district 值。

2️⃣ ORDER BY:排序查询结果

默认是升序(小 → 大),降序加 DESC。

SELECT * FROM houses
ORDER BY price DESC;
  • ORDER BY price:从便宜到贵
  • ORDER BY price DESC:从贵到便宜
    还可以多条件排序:
ORDER BY district ASC, price DESC

3️⃣ LIMIT:限制查询结果条数

✅ 查最贵的三套房:

SELECT title, price
FROM houses
ORDER BY price DESC
LIMIT 3;

4️⃣ LIMIT + OFFSET:分页神器

✅ 分页的常见逻辑:
比如你一页显示 10 条,想看第 3 页(也就是第 21-30 条):

SELECT * FROM houses
ORDER BY price DESC
LIMIT 10 OFFSET 20;

📌 OFFSET 是"跳过"的意思,先跳过 20 条,从第 21 条开始查。

5️⃣ LIMIT 用法口诀(分页实战记住!)

  • 第一页:LIMIT 10 OFFSET 0
  • 第二页:LIMIT 10 OFFSET 10
  • 第三页:LIMIT 10 OFFSET 20
  • 第 N 页:LIMIT 10 OFFSET (N-1)*10
    你可以配合前端分页逻辑,让查询结果干净利索!

🧠 总结口诀

DISTINCT 去重别再重复烦,
ORDER BY 排个序,升降记心间。

LIMIT 限条数,OFFSET 分页干,
TOP N 查询好搭档,组合技最关键。

🛠 小练习题

  1. 查出不重复的所有 district
SELECT DISTINCT district FROM houses;
  1. 查租金最贵的前 5 套房子
SELECT title, price
FROM houses
ORDER BY price DESC
LIMIT 5;
  1. 查出第 2 页的房源(每页 3 条)
SELECT *
FROM houses
ORDER BY house_id
LIMIT 3 OFFSET 3;

网站公告

今日签到

点亮在社区的每一天
去签到