概述
DISTINCT:去重,字面意思,去除重复的数据。使用时需要注意,使用此关键字是对查询列的去重。
- 语法:SELECT DISTINCT 字段1,字段2... FROM 表名。
LIMIT:限制查询结果的行数。想要返回多少行数据。各数据库是存在差异的,MYSQL、SQLite等数据库使用LIMIT,ORACLE数据库多数使用行计数器ROWNUM,SQL SERVER 则是使用 TOP。
- LIMIT语法:SELECT 字段1,字段2... FROM 表名 LIMIT 3 。LIMIT语句放在查询的最后一行,表示此查询限制返回三行数据。 LIMIT 3 OFFSET 2,表示检索第二行起的3行数据。LIMIT 2,3 是简写,简写需要注意第一个值就变成OFFSET值,第二个才是LIMIT值,也就是返回的行数。(MYSQL检索数据表第一行是第0行)
- ROWNUM语法:SELECT 字段1,字段2... FROM 表名 WHERE ROWNUM <=3,返回行号(ROWNUM)小于或是等于3的数据。(Oracle系统顺序分配从查询返回的行的编号,返回的第一行分配的是1)
- TOP语法:SELECT TOP 3 字段1,字段2... FROM 表名,返回前三行数据。这是按照行数限制,SQL SERVER中TOP还有个语法, TOP 30 PERCENT,表示的意思是 :返回表中30%的数据。
ORDER BY:排序。直接查询表的数据,展现出来的有可能是最初数据添加的顺序,但是也有可能是其他的(如果行数据更新或是删除过,这个初始插入数据的顺序就会受到DBMS重用回收存储控空间的方式的影响)。
- 语法:SELECT 字段1,字段2... FROM 表名 ORDER BY 字段1,按照字段1排序。默认排是升序ASC,需要降序的话需要限制DESC。ORDER BY 的使用在限制行数前。
- 一般排序都是在查询的最后一行,加上行数限制的语法:
MYSQL :SELECT 字段1,字段2... FROM 表名 WHERE 1=1 ORDER BY 字段1 LIMIT 3
SQL SERVER :SELECT TOP 3 字段1,字段2... FROM 表名 WHERE 1=1 ORDER BY 字段1
ORACLE:SELECT 字段1,字段2... FROM 表名 WHERE ROWNUM <=3 ORDER BY 字段1
注意:ORACLE中,上语句的语义是:查询ROWNUM<=3的数据行,然后按照字段1排序(先限制行数,再排序);这个使用方法的话可能不会得到我们想要的结果。上边MYSQL以及SQL SERVER 的语义都是先排序,再限制行数。ORACLE达到同样目的的话,可以这样写:
SELECT 字段1,字段2 FROM ( SELECT 字段1,字段2,ROW_NUMBER() OVER(ORDER BY 字段1 ) AS ROWNUM FROM 表名 ) WHERE ROWNUM <=3
解析:先在内层中按照我们需要的字段1排序,然后再限制行号即可。
排序是可以多字段排序的,当单独字段的排序不能满足要求时,可以增加字段排序,排序方式默认ASC升序,降序加上DESC。语法:ORDER BY 字段1 ASC,字段2 DESC 。
最后
以上就是腼腆小蝴蝶为你收集整理的去重DISTINCT、限制LIMIT、排序ORDER BY的全部内容,希望文章能够帮你解决去重DISTINCT、限制LIMIT、排序ORDER BY所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复