Where和having

where基于from的数据做的筛选;

(个人理解)having基于select的数据做的筛选

按照以上的理解,可以做以下测试:

表名student,列名及数据:

+------+--------+------+------+
| SId  | Sname  | Sage | Ssex |
+------+--------+------+------+
| 1    | 张三   | 18   | 男   |
| 2    | 李四   | 20   | 男   |
| 3    | 王武   | 22   | 男   |
| 4    | 小白   | 20   | 女   |
+------+--------+------+------+

mysql> select * from student a where a.Sage > 20;
+------+--------+------+------+
| SId  | Sname  | Sage | Ssex |
+------+--------+------+------+
| 3    | 王武   | 22   | 男   |
+------+--------+------+------+
1 row in set (0.00 sec)

mysql> select * from student a having a.Sage > 20;
+------+--------+------+------+
| SId  | Sname  | Sage | Ssex |
+------+--------+------+------+
| 3    | 王武   | 22   | 男   |
+------+--------+------+------+

mysql> select a.Sname from student a having a.Sage > 20;
ERROR 1054 (42S22): Unknown column 'a.Sage' in 'having clause'

错误原因:select中没有Sage字段

mysql> select max(a.Sage) as ma from student a where ma > 20;
ERROR 1054 (42S22): Unknown column 'ma' in 'where clause'

错误原因:where 后不能使用select中的别名或聚合行数

mysql> select max(a.Sage) as ma from student a having ma > 20;
+------+
| ma   |
+------+
| 22   |
+------+
1 row in set (0.00 sec)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值