mysql select 结合where子语句查询结果集
WHERE子句
在SELECT语句中,语句首先从FROM子句开始执行,执行后会生成一个中间结果集,然后就开始执行WHERE子句。WHERE子句是对FROM子句生成的结果集进行过滤,对中间结果集的每一行记录,WHERE子句会返回一个布尔值,(TRUE/FALSE),如果TURE,这行记录继续留在结果集中,如果FALSE,则这行记录从结果集中移除。如:
SELECT name FROM student WHERE studentNO = 2
FROM子句返回的中间结果集如下:
studentNO name
1 张三
2 李四
3 王五
4 赵六
总共4行记录,对每一行记录执行WHERE子句。第一行中studentNO是1,所以studentNO=2表达式返回值为FALSE,这行记录移除。第二行中studentNO是2,所以studentNO=2返回TRUE,这行记录继续保留;同理第三行和第四行记录也移除,执行完WHERE语句后的中间结果集为:
studentNO name
2 李四
然后执行SELECT语句,最终的结果集为:
name
李四
比较运算符
WHERE子句返回布尔值,所以WHERE子句经常会用到比较运算符。比较运算符有:
= 等于
<=> 相等或者都等于空
< 小于
> 大于
<= 小于或等于
>= 大于或等于
<> 不等于
!= 不等于
2=2的结果为true,15<9的结果为false,3>2的结果为true,5!=4的结果为true。
字符串也可以进行比较,'b'<'g'的结果为true,'h'>'k'的结果为false。
时间值可以比较,较早的时间小于较晚的时间。'1980-5-4'<'1990-02-15'的结果为true,'1991-2-18'>'1991-2-19'的结果为false。
=比较符与<=>比较符的差别在于,当比较两个空值的时候,=返回unknown,<=>返回为true。
子查询中的比较运算符
SELECT studentNO FROM student WHERE studentNO > (SELECT studentNO FROM student WHERE name='李四')
一个子查询可以用于WHERE子句中。上例中是一个标量子查询,子查询只能返回一个标量值。
同样一个行子查询也可以用于WHERE子句中:
SELECT studentNO FROM student WHERE (studentNO,name) = (SELECT studentNO,name FROM student WHERE name='李四')
WHERE子句并不一定带比较运算符,当不带运算符时,会执行一个隐式转换。当0时转化为false,当其他值是转化为true。
不带比较运算符的WHERE子句
SELECT studentNO FROM student WHERE 0
则会返回一个空集,因为每一行记录WHERE都返回false。
SELECT studentNO FROM student WHERE 1
或者
SELECT studentNO FROM student WHERE 'abc'
都将返回student表所有行记录的studentNO列。因为每一行记录WHERE都返回true。
- 使用学习率规划器自适应调整神经网络训练过程中的学习率
- 动手实现MVC: 3. AOP实现准备篇动态代理
- Linux基础(day48)
- 用Pandas在Python中可视化机器学习数据
- 动手实现MVC: 4. AOP的设计与实现
- 12.3/12.4 PHP安装
- 12.2 MySQL安装
- Guava之 Joiner & Splitter
- 周期序预测列问题中的朴素模型——周期跟随模型(Seasonal Persistence)
- Linux系统运行小火车
- Java 动手写爬虫: 五 对象池
- 12.15 Nginx解析php相关配置
- RCE+OOB+一道HCTF实战
- 如何在Python中保存ARIMA时间序列预测模型
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- Python|进制转换问题
- 数据库|MySQL制作成绩表单视图
- Spark Core——RDD何以替代Hadoop MapReduce?
- k8s基础概念及术语
- msf工具之木马程序制作以及伪装
- 一次服务器沦陷为肉鸡后的实战排查过程!
- 使用 centOS 7 部署前端项目
- PHP rand() 函数随机整数。
- PHP使用htmlspecialchars方法实现像ASP的Server.HTMLEncode一样的效果
- jquery.ajax()怎么把获取来的内容转为JSON,并使用。
- Spring:IOC 控制反转
- Spring:AOP 面向切面编程
- JavaScript进阶教程(5)-一文让你搞懂作用域链和闭包
- JavaScript进阶教程(6)—硬核动图让你轻松弄懂递归与深浅拷贝
- Spring:JDBC Template,声明式事务