1、select *form 表1 where 姓名 in(select 姓名 from 表2 where grade>60)
这句中的in与括号里面的是什么意思2、in和Exists有何区别?3、group by的意义
比如Select id as 编号,sub(金额) as 总金额 from 表 Group by id
似乎不加Group by id 也返回了统计的金额和id,那么加了这个Group by id 又有什么意义呢??4、Group by还有个having的判断语句,与where区别在哪里?
这句中的in与括号里面的是什么意思2、in和Exists有何区别?3、group by的意义
比如Select id as 编号,sub(金额) as 总金额 from 表 Group by id
似乎不加Group by id 也返回了统计的金额和id,那么加了这个Group by id 又有什么意义呢??4、Group by还有个having的判断语句,与where区别在哪里?
括号里面的是一个子查询,将返回一个结果集
2.EXISTS
指定一个子查询,检测行的存在。
IN
确定给定的值是否与子查询或列表中的值相匹配。
3.GROUP BY 分组,你可以试试你两个语句结果是不一样的
上语句将ID相同的进行统计,返回总金额
4.HAVING是对结果进行过滤
WHERE是对原始记录进行过滤具体语法和解释可见帮助
该语句查询的是:查询成绩及格的学生的所有信息。
其实是包括两个查询:先获取成绩及格的学生姓名: select 姓名 from 表2 where grade >60
然后获取这些学生姓名的成绩(因为 成绩及格的学生很多,是一个结果集),用in关键字,在这个结果集中的,都查询其全部信息。2.Exists 只返回“真”或者是“假”,并不需要返回一个结果集,子查询的内容不重要,重要的是满足有该条件的数据内容是否存在,只返回 true或者fasle.
exists用来测试集合是否为空3.group 是用来分组统计的。你可以具体用两条语句的接过来进行分析就知道了。
where先过滤分组,having是将获得的最后分组结果再进行过滤。执行顺序为:from子句
|
where子句
|
group by子句
|
having子句
|
select子句
|
order by 子句这样的一个sql语句执行顺序,理解having 和where就很简单了
确定给定的值是否与子查询或列表中的值相匹配。EXISTS
指定一个子查询,检测行的存在。 GROUP BY
将表分为组。组可包含列名、结果或计算列。HAVING
指定组或聚合的搜索条件。HAVING 只能与 SELECT 语句一起使用。通常在 GROUP BY 子句中使用它。如果不使用 GROUP BY 子句,HAVING 的行为与 WHERE 子句一样。
在有些情况下,还是不一样的。包含在having子句中的列必须是数据组列。
HAVING指的是分组后的信息过滤