SQL 课程第四节:对查询结果进行筛选和排序
尽管数据库中的数据可能是独一无二的,但是查询的结果可能却会有很多条。那我们的电影表举个例子,很多不同的电影可能会发布在同一年。SQL支持使用DISTINCT关键字来丢弃值重复的项。
选择查询独一无二的值
SELECT DISTINCT column, another_column, ... FROM mytable WHERE condition(s);
由于DISTINCT关键字将盲目删除重复行,我们将在今后的课程中学习如何使用分组和GROUP BY子句来根据特定值来丢弃重复项。
排序结果
不想最近几节课中作为例子的表,在实际应用中,大多数数据库都不仅仅有我们特定给出的属性。结果就是,我们很难从成千上万的结果中找到我们想要的数据。
好在SQL支持使用ORDER BY子句来让返回的结果成降序或者升序排列。
限制性查询
SELECT column, another_column, ... FROM mytable WHERE condition(s) ORDER BY column ASC(ascending,升序)/DESC(descending,降序);
当使用 ORDER BY 子句的时候,每一行都根据制定的列的值来进行排序。在某些数据库中,还可以规定排序的规则,以便更好的对包含国际文本的数据进行排序。
将结果限制到子集
在使用ORDER BY子句的时候,还经常搭配LIMIT和OFFSET子句,这两个子句将指挥数据库对你想要的结果的子集进行优化。LIMIT将会限制返回数据的行数,OFFSET可以制定开始计数的行。
限制性查询
SELECT column, another_column, ... FROM mytable WHERE condition(s) ORDER BY column ASC/DESC LIMIT num_limit OFFSET num_offest;
在实际应用中,往往需要按话题热度和时间来进行数据的排序,而且每个后续页面可以由数据库中具有不同偏移量的链接集来表示。使用这些子句,数据库就可以通过只处理和返回所请求的内容来更快和更有效的查询。
练习
这节课中有一些概念性的知识,而学习概念是为了更好的应用。为了让练习更有情趣,我们在练习中为你设置来一个练习表,以便跟好的模拟你在现实生活中可能遇到的情况。尝试使用这节课所讲的内容来完成下面的查询吧 :) 。
image.png
网友评论