我是靠谱客的博主 腼腆小蝴蝶,最近开发中收集的这篇文章主要介绍去重DISTINCT、限制LIMIT、排序ORDER BY,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部