SQL查询中having与where 的异同点

在sql查询中, having与where类似,可以筛选数据,where后的表达式怎么写,having后就怎么写。
1. where针对表中的列发挥作用,查询数据。
2. having对查询结果中的列发挥作用,筛选数据。

-- 查询本店商品价格比市场价低多少钱,输出低200元以上的商品
select goods_id,good_name,market_price - shop_price as s
from goods
having s>200 ;
--这里不能用where因为s是查询结果,而where只能对表中的字段名筛选

如果用where的话则是:

select goods_id,goods_name
from goods
where market_price - shop_price > 200;

同时使用where与having

 select cat_id,goods_name,market_price - shop_price as s from goods where cat_id = 3 having s > 200;

查询积压货款超过2万元的栏目,以及该栏目积压的货款

    select cat_id,sum(shop_price * goods_number) as s from goods  group by cat_id  having s > 20000 

查询两门及两门以上科目不及格的学生的平均分
思路:

-- 先计算所有学生的平均分
select name,avg(score) as pj
from stu
group by name;
-- 查出所有学生的挂科情况
select name,score<60
from stu;
-- 这里score<60是判断语句,所以结果为真或假,mysql中真为1假为0-- 查出两门及两门以上不及格的学生
select name,sum(score<60) as gk
from stu
group by name
having gk > 1;-- 综合结果
select name,sum(score<60) as gk,avg(score) as pj
from stu
group by name
having gk >1; 

SQL查询中having和where的异同点相关推荐

  1. vba ado 执行多条mysql 语句,Excel VBA+ADO+SQL入门教程003:SQL查询中字段技巧的总结...

    原标题:Excel VBA+ADO+SQL入门教程003:SQL查询中字段技巧的总结 本章概要: 1,几个概念 1.1, 数据库和Excel工作簿 1.2,数据表和Excel工作表 1.3,记录.字段 ...

  2. oracle查数据存入数组,如何在SQL查询中使用Oracle关联数组

    ODP.Net公开了将关联数组作为参数从C#传递到Oracle存储过程的能力.除非您尝试在sql查询中使用该关联数组中包含的数据,否则它是一个很好的功能. 原因是它需要上下文切换 – SQL语句需要S ...

  3. Laravel SQL查询中first、pluck、lists方法的使用

    Laravel SQL查询中first.pluck.lists方法的使用

  4. 读书笔记:SQL 查询中的SQL*Plus 替换变量(DEFINE变量)和参数

    本文为"SQL*Plus 替换变量 - 在 SQL 查询中定义变量和参数"的读书笔记. 此文主要是讲替换变量,也称为DEFINE变量,但也涉及了绑定变量和SQL Plus系统变量. ...

  5. mysql and 和where,关于mysql:连接sql查询中where和and子句的区别

    本问题已经有最佳答案,请猛点这里访问. 下面两个SQL查询有什么区别 和 号 根据以下两个测试结果 速度更快(237比460).据我所知,这是一个标准. . 氧化镁 不,有细微的差别,你不能说没有差别 ...

  6. sql查询中使用in和exits比较和区别

    首先,查询中涉及到的两个表,一个user和一个order表,具体表的内容如下: user表: order表: in 确定给定的值是否与子查询或列表中的值相匹配.in在查询的时候,首先查询子查询的表,然 ...

  7. java sql 查询中的转义序列不对_在 JDBC 中使用 SQL 转义序列 - SQL Server | Microsoft Docs...

    使用 SQL 转义序列Using SQL escape sequences 08/12/2019 本文内容 按照 JDBC API 的定义,Microsoft JDBC Driver for SQL ...

  8. sql查询中截取字符串

    SQL 语句中查询结果字符截取left,right,substrng用法 在SQL的实际用途中,经常会碰到需要对查询结果值需要做字段的一些截取,下面列举经常用到的三种常用截取方式. 1.LEFT(st ...

  9. SQL 查询中exists用法

    EXISTS 的子查询 不返回具体的数据,只返回所查询数据的行数.所以一般EXISTS后面的查询通常都用 * 表示,给出具体的列名没有实际意义 若内层的查询结果为非空,则外层的 WHERE语句 子句返 ...

最新文章

  1. 使用Lex和Yacc开发C语言的编译器
  2. SmartCode 使用常见问题
  3. No module named 'pandads'
  4. android休眠后恢复线程,关于Android系统休眠后,线程的执行情况
  5. 数据结构——树的C语言实现
  6. c语言行列坐标是先行后j,C语言学习之行列操作
  7. 格式化zookeeper命令_zookeeper原理篇Zookeeper的数据存储与恢复原理
  8. SpringBoot 上传文件(单个、多个文件)
  9. 宽带路由器常见故障排除
  10. js 俩组数据根据id合并
  11. java 数组 转set_java中的list,set,数组之间的转换
  12. 小米贷款利息计算器源码
  13. 刚想起QQ微信支付宝三合一收款码
  14. 星际、魔兽3、红警完全对比
  15. 寂寞沙洲冷c语言程序,周传雄《寂寞沙洲冷》吉他谱简单版 酷音小伟吉他弹唱教学吉他谱...
  16. Shader学习建议
  17. python中numpy.random.gamma()函数
  18. citra 图形设置_bios怎么设置硬盘启动顺序 bios设置硬盘启动方法
  19. 如何做一个基于python校园运动场地预约系统毕业设计毕设作品(Django框架)
  20. java添加例外_JAVA例外处理

热门文章

  1. python爬取歌曲评论并进行数据可视化
  2. C#单例---饿汉式和懒汉式
  3. loadrunner-3-3场景计划方式与运行模式
  4. JAVA学习--面向对象的特征二:继承性
  5. SQL Server 中关于EXCEPT和INTERSECT的使用方法
  6. keepalived+lvs(HA+LB)
  7. 四个你看后可能会影响你一生的故事
  8. EL在java里的意义
  9. python 创建子类_python创建子类的方法分析
  10. 最长上升子序列三种模板(n^2模板,二分模板,树状数组模板)