sql嵌套查询总结01

1、where 与 HAVING 的区别

where是在查询结果出来之前,进行条件过滤,而HAVING是在查询结果出来之后,进行条件过滤。

最明显的区别就是:where后面加的字段名必须是要查询的实体表里存在的字段,而HAVING后面加的字段名是在查询结果之后的虚拟表中存在的字段。

例如:SELECT scoreid,cid AS cid_count FROM score  HAVING cid_count>2

2、group by 后面跟字段名,作用就是将以此字段进行分组。

例如:SELECT sid,COUNT(*) AS cid_count FROM score GROUP BY sid

结果显示为每个sid对应的记录数。

3、where跟group by的嵌套使用:

例如:SELECT sid,COUNT(cid) AS cid_count FROM score WHERE score >90 GROUP BY sid

结果显示为每个sid对应的score大于90的记录数。

4、COUNT(*)为空时,如何显示为0:

COUNT(CASE WHEN score.`score`>90 THEN 1 ELSE NULL END )

即当查找score大于90的记录数为空时,就直接显示为0,不加这个条件,就不会显示。

例如:SELECT student.name, COUNT(CASE WHEN score.`score`>90 THEN 1 ELSE NULL END ) AS course_count FROM course,student,score WHERE student.sid=score.`sid` AND score.`cid` = course.`cid`  GROUP BY score.sid;

结果显示为每个sid对应的score大于90的记录数,为空时显示为0.

参考资料

http://www.cnblogs.com/rainman/archive/2013/05/01/3053703.html

时间: 2024-11-04 07:00:26

sql嵌套查询总结01的相关文章

sql 嵌套查询

1.Case 子查询连接查询 select * from score create database demo use demo create table [user] (        [uId] int identity( 1 ,1 ) primary key,        [name] varchar ( 50),        [level] int   --1骨灰大虾菜鸟 ) insert into [user] ( name, level ) values (' 犀利哥 ', 1 

SQL语句 - 嵌套查询

嵌套查询的意思是,一个查询语句(select-from-where)查询语句块可以嵌套在另外一个查询块的where子句中,称为嵌套查询.其中外层查询也称为父查询,主查询.内层查询也称子查询,从查询. 嵌套查询的工作方式是:先处理内查询,由内向外处理,外层查询利用内层查询的结果嵌套查询不仅仅可以用于父查询select语句使用.还可以用于insert.update.delete语句或其他子查询中. 一.子查询的组成 1.包含标准选择列表组件的标准select查询. 2.包含一个或多个表或者视图名称的

数据库开发基础-SQl Server 主键、外键、子查询(嵌套查询)

主键 数据库主键是指表中一个列或列的组合,其值能唯一地标识表中的每一行.这样的一列或多列称为表的主键,通过它可强制表的实体完整性.当创建或更改表时可通过定义 PRIMARY KEY约束来创建主键.一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值.由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列. 主键的作用 主键的主要作用如下: (1)保证实体的完整性: (2)加快数据库的操作速度: (3) 在表中添加新记录时,数据库会自

sql子查询 嵌套SELECT语句

嵌套SELECT语句也叫子查询,一个 SELECT 语句的查询结果能够作为另一个语句的输入值.子查询不但能够出现在Where子句中,也能够出现在from子句中,作为一个临时表使用,也能够出现在select list中,作为一个字段值来返回. 1.单行子查询 :单行子查询是指子查询的返回结果只有一行数据.当主查询语句的条件语句中引用子查询结果时可用单行比较符号(=, >, <, >=, <=, <>)来进行比较. 例:select ename,deptno,salfrom

sql子查询和嵌套查询

子查询和嵌套查询 标签: it   嵌套查询就是在外部还有一个查询. 子查询是在select 内部还有一个select 查询常常也被称为内查询 下面的错误示例: select name from [user] where age <= (select age from [user] where id>1 ) 子查询返回的值多于一个.当子查询跟随在 =.!=.<.<=.>.>= 之后,或子查询用作表达式时,这种情况是不允许的. 1.语法 子查询的句法如下: (SELECT

一道SQL笔试题:使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位

S (SNO,SNAME,SDD,SAGE) SNO,SNAME,SDD,SAGE 分别代表学号.学 员姓名.所属单位.学员年龄 C (CNO,CNAME ) CNO,CNAME 分别代表课程编号.课程名称 SC(SNO,CNO,SCORE ) SNO,CNO,SCORE 分别代表学号. 所选修的 课程编号.学习成绩 三个表的数据如下: 问题: 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位 自己写的SQL: SELECT SNO,SDD FROM S WHERE SNO IN( s

SQL数据查询之——嵌套查询

一.概念描述 在SQL语言中,一个 SELECT-FROM-WHERE 语句称为一个查询块.将一个查询块嵌套在另一个查询块的 WHERE 子句或 HAVING 短语的条件中的查询称为 嵌套查询.例如: SELECT Sname /*外层查询或父查询*/ FROM Student WHERE Sno IN (SELECT Sno /*内层查询或子查询*/ FROM SC WHERE Cno='2'); SQL语言允许多层嵌套查询,即一个子查询中还可以嵌套其他子查询. 注意:子查询的SELECT语句

sql子查询 嵌套SELECT实用语句

嵌套SELECT语句也叫子查询,一个 SELECT 语句的查询结果能够作为另一个语句的输入值.子查询不但能够出现在Where子句中,也能够出现在from子句中,作为一个临时表使用,也能够出现在select list中,作为一个字段值来返回. 1.单行子查询 :单行子查询是指子查询的返回结果只有一行数据.当主查询语句的条件语句中引用子查询结果时可用单行比较符号(=, >, <, >=, <=, <>)来进行比较. 例:select ename,deptno,sal fro

sql的嵌套查询,把一次查询的结果做为表继续进一步查询;内联视图

Mysql的嵌套表查询 嵌套SELECT语句也叫子查询,一个 SELECT 语句的查询结果能够作为另一个语句的输入值.子查询可以: 出现在Where子句中, 出现在from子句中,作为一个临时表使用, 出现在select list中,作为一个字段值来返回. 示例 1.出现在where子句中 单行子查询 :单行子查询是指子查询的返回结果只有一行数据.当主查询语句的条件语句中引用子查询结果时可用单行比较符号(=, >, <, >=, <=, <>)来进行比较. select