您的位置:首页 > 大数据 > 人工智能

select的5中子句where,group by, havaing, order by, limit的使用顺序及实例

2015-12-09 16:09 399 查看
--语法:


SELECTselect_list    FROMtable_name   [WHEREsearch_condition]   [GROUPBYgroup_by_expression]   [HAVINGsearch_condition]   [ORDERBYorder_expression[ASC|DESC]] [limitm,n]

  


--示例:

--limit0,10是从第一条开始,取10条数据


selectclassNofromtable_name
groupbyclassNo
having(avg(成绩)>70)
orderbyclassNo
limit0,10


  

说明:

1.where

where后跟条件用来筛选我们所需的行。它后面可以跟的操作符有=、!=、<、>、<=、>=、in、like(可以和通配符%结合一起用,效果将会更好)、between....and........AND、OR、NOT

如:selectid,name,scoreformstudentwherescorein(每组里面的最高分组合);

2.groupby(GROUPBY语句用于结合合计函数(也叫聚合函数sumcountavgmaxmin),根据一个或多个列对结果集进行分组。否则没有多大的意义)

groupby有一个原则,就是select后面的所有列中,没有使用聚合函数的列,必须出现在groupby后面

如:我们对文字的分类id进行分组,查询每组分类的文章数selectarticlecategory_id,count(*)fromarticlegroupbyarticlecategory_id;

再次提示:

如果你使用了groupby,而没有相应的使用聚合函数那么结果就没有意义了,按照实际情况来思考的话就变成了一对多了(也就是一个分组对应多个对象(也就是多行),那么一个分组对应多行数据的显示就变成了分组和第一行数据进行显示了,所以此时我们应该使用聚合函数(聚合函数就是把多个变成一),也就是对多行数据进行筛选,得到我们想要的数据,如:可以使用count计算论坛小组总帖子数,可以使用sum来计算

论坛小组帖子总回复数,可以使用max来计算论坛小组最多回复的帖子,可以使用min来计算论坛小组最少回复数(没有多大意义,商城最便宜的商品就意义了),可以使用avg来计算论坛每周的平均访问量(商城所有商品的平均价格)等。


3.having这个是针对查询的结果进行作用,只能对结果拥有的列进行操作,与where不同的是where是针对原表(就是from后面的那张表的字段)发挥作用。其中having里面可以使用聚合函数。为groupby子句设置条件,类似于where为select语句设置条件的方法。having的查找条件可以包括集合函数表达式。除此之外,它的查找条件与where查找条件相同。

selectarticlecategory_id,count(*)fromarticlegroupbyarticlecategory_idhavingcount(*)<5;

4.orderby排序(可以对多个字段进行排序)

可以针对字段进行排序,orderby字段1[asc]升序,[desc]降序

5.limit获取条目的限定

语法limitoffset,N

limit5《====》limit0,5;

总结:where是针对from后面跟的表进行处理,而groupbyhavingorderbylimit则是针对select后面的字段进行处理。从它们的结构角度来看则:先整体后部分。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: