SQL在线练习网址:SQL在线练习
Lesson 4:查询结果过滤和排序
基本语法
- 选取出唯一的结果:
SELECT DISTINCT column
FROM mytable
WHERE condition(s)
注意:DISTINCT关键字:指定某个或某些属性列唯一返回
- 结果排序:
SELECT column
FROM mytable
WHERE condition(s)
ORDER BY column ASC/DESC
注意:
ASC(升序):如:1,2,3,… (数字)或者 A,B,C,…(字母)
DESC(降序):如: … 3,2,1.(数字)或者 …C,B,A.
- 选取部分结果:
SELECT column
FROM mytable
WHERE condition(s)
ORDER BY column ASC/DESC
LIMIT num_limit OFFSET num_offset
注意:
LIMIT:指定只返回多少行结果
OFFSET:指定从哪一行开始返回
(你可以想象一下从一条长绳子剪下一小段的过程,我们通过 OFFSET 指定从哪里开始剪,用 LIMIT 指定剪下多少长度)
实践练习
依旧是上一节课练习的那张表格
Table(表): Movies
Id | Title | Director | Year | Length_minutes |
---|---|---|---|---|
1 | Toy Story | John Lasseter | 1995 | 81 |
2 | A Bug’s Life | John Lasseter | 1998 | 95 |
3 | Toy Story 2 | John Lasseter | 1999 | 93 |
4 | Monsters, Inc. | Pete Docter | 2001 | 92 |
5 | Finding Nemo | Finding Nemo | 2003 | 107 |
6 | The Incredibles | Brad Bird | 2004 | 116 |
7 | Cars | John Lasseter | 2006 | 117 |
8 | Ratatouille | Brad Bird | 2007 | 115 |
9 | WALL-E | Andrew Stanton | 2008 | 104 |
10 | Up | Pete Docter | 2009 | 101 |
11 | Toy Story 3 | Lee Unkrich | 2010 | 103 |
12 | Cars 2 | John Lasseter | 2011 | 120 |
13 | Brave | Brenda Chapman | 2012 | 102 |
14 | Monsters University | Dan Scanlon | 2013 | 110 |
- 按导演名排重列出所有电影(只显示导演),并按导演名正序排列
SELECT DISTINCT director
FROM movies
- 列出按上映年份最新上线的4部电影
SELECT * FROM movies
WHERE year
ORDER BY year DESC
LIMIT 4
(注意:在此把“WHERE year”省去也是可以的)
- 按电影名字母序升序排列,列出前5部电影
SELECT * FROM movies
ORDER BY title ASC
LIMIT 5
- 按电影名字母序升序排列,列出上一题之后的5部电影
SELECT * FROM movies
ORDER BY title ASC
LIMIT 5
OFFSET 5
- 如果按片长排列,John Lasseter导演导过片长第3长的电影是哪部,列出名字即可
SELECT title FROM movies
WHERE director LIKE "John Lasseter"
ORDER BY Length_minutes ASC
LIMIT 1
OFFSET 2
- 按导演名字母升序,如果导演名相同按年份降序,取前10部电影给我
SELECT * from movies
ORDER BY director ASC,year DESC
LIMIT 10