COUNT(*) 函数返回在给定的选择中被选的行数。sql
语法:SELECT COUNT(*) FROM tableapp
使用:如今有一个表,名叫app_category,从Navicat中能够看到表中全部数据,如图所示,可见表中有297条数据函数
使用count函数的时候能够看到:工具
固然仅仅是这个样子,是木有意义的,我用个可视化工具一眼看穿,要这个函数就显得鸡肋了,那么咱们继续往下看。3d
场景是这样的:表app_category与表category关联。且表间关系是一对多,即同一个app_category_id 对应多个category-id,如今我须要统计出每个category_id在app_category表中出现的次数那么该如何实现呢,请看接下来的操做:blog
这样依然有点不够酷炫,那么咱们还能够在后面继续追加sql语句呀开发
例如这条语句:table
SELECT category_id ,COUNT(*) AS count FROM app_category
GROUP BY category_id HAVING count(category_id) >2ast
其查询的结果是只有count的值大于2 的时候,才是须要的结果可视化
是否是有点小先进了,固然不要激动,咱们还能够把这个查询的结果做为子查询,进行嵌套查询,两个表关联查询而后再嵌套查询等等。这里我就不过多截图,上一个开发商城项目中用到的查询语句:
SELECT ps.name FROM property_set ps , category_property_set cps WHERE ps.id=cps.property_set_id AND category_id=(
SELECT category_id AS count FROM category_property_set
GROUP BY category_id HAVING count(category_id) <5
)
大眼一看,可能比较懵逼,听我分析一下:
首先是子查询:SELECT category_id AS count FROM category_property_set
GROUP BY category_id HAVING count(category_id) <5
查出category_property_set 表中category_id出现次数小于5的那个category_id的具体的值,恰好获得的结果是只有一条,那么知足嵌套查询的条件,用到<,>=等符号时,子查询结果必须惟一,全部给其添加到外部查询,其实等价于这样一条语句:
SELECT ps.name FROM property_set ps , category_property_set cps WHERE ps.id=cps.property_set_id AND category_id=925640926728343552
不用怀疑,这个category_id就是查询出来的ID,而后这又是一个最最基本的两表联合查询,连个外联内联都没用,而后结果就是这个样子
啊哈,恰好就是我须要的一个名称,为啥这麻烦呢,由于表建的很差呗,须要经过category_id 查category_property_set表,而后再经过结果去查property_set表,最后获得属性的名字,而后就只能想办法在sql语句上下功夫了呀。
固然,看完有可能仍是蒙蔽的。不要虚,看这个
http://www.w3school.com.cn/sql/sql_func_count_ast.asp
这个网址里面的东西看完了,保证啥查询语句都难不倒你了。说完收工