子查询

子查询 子查询是多表查询的一种形式。子查询就是次要查询,它返回的结果数据被用 于主查询的条件中。它返回的结果可以是一行或多行。比如: 例1//返回一条记录 select * from emp where deptno=(select deptno from dept where dept_name=‘SALES’) 例2//返回多条记录 select * from emp where deptno in (select deptno from dept where dept_addr=‘北京’) 由上例可以看出,子查询并不要求两个表有相关字段,只要得到子查询的结果集 就行,用于主查询,而连接查询,则必须要求两个表有相关字段。 2.连接查询是对两个表逐记录 (一行一行地) 进行相关查询,例1可写为连接查询 ,例2不可以写为连接查询,因为子查询返回多行记录。 select * from emp a, dept b where a.deptno= b.deptno and b.dept_name=‘SALES’ 上述形式为内连接,还有外连接 oracle中的字段后面有加号是什么意思,多说一点详细一点 a.emp_no = b.emp_no (+) 不论把(+)写在等号左边项还是右边项,统称为外连接 在内连接中,只返回那些在连接表中有匹配数据的数据行 外连接即在被连接的表中加入一个空行来与没有匹配行的数据进行匹配 比如查询员工所属的部门,总裁不属于任何部门, (老板不属于任何部门,dname 项是空的) select e.emp_name ename,d.dept_name dname from emp e, dept d where e.dept_no=d.dept_no(+) ename dname —————————— sam SALES ...

2014-06-19 · 1 min · 81 words · -

sql group by having

‘sql group by having’ http://www.cnblogs.com/wang-123/archive/2012/01/05/2312676.html sql中的group by 用法 Group By 语句从英文的字面意义上理解就是"根据(by)一定的规则进行分组(Group)"。 -它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。 -注意:group by 是先排序后分组; -举例子说明: 如果要用到group by 一般用到的就是"每这个字" 例如说明现在有一个这样的表: 每个部门有多少人 就要用到分组的技术 select DepartmentID as ‘部门名称’, COUNT(*) as ‘个数’ from BasicDepartment group by DepartmentID -这个就是使用了group by +字段进行了分组,其中我们就可以理解为我们按照了部门的名称ID -DepartmentID将数据集进行了分组;然后再进行各个组的统计数据分别有多少; -如果不用count(*) 而用类似下面的语法 select DepartmentID,DepartmentName from BasicDepartment group by DepartmentID -将会出现错误 -消息 8120,级别 16,状态 1,第 1 行 -选择列表中的列 ‘BasicDepartment.DepartmentName’ 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。 -这就是我们需要注意的一点,如果在返回集字段中,这些字段要么就要包含在Group By语句的后面, -作为分组的依据;要么就要被包含在聚合函数中。 -出现的错误详解:咱们看看group by 的执行的过程,先执行select 的操作返回一个程序集, -然后去执行分组的操作,这时候他将根据group by 后面的字段 -进行分组,并且将相同的字段并称一列数据,如果group by 后面没有这个字段的话就要分成好多的数据。 ...

2014-01-19 · 2 min · 228 words · -