只用IN操作符不对头,IN的逻辑就是“或”,number IN ('1','4','6','13')就相当于number='1' or number='4' or number='6' or number='13',而你的number中没有13(10个值里面没13),则或上等于13的,过滤效果就等同于没加这个条件,于是查出3条记录。
创新互联公司主要为客户提供服务项目涵盖了网页视觉设计、VI标志设计、成都全网营销推广、网站程序开发、HTML5响应式网站建设、手机网站制作、微商城、网站托管及成都网站改版、WEB系统开发、域名注册、国内外服务器租用、视频、平面设计、SEO优化排名。设计、前端、后端三个建站步骤的完善服务体系。一人跟踪测试的建站服务标准。已经为木包装箱行业客户提供了网站营销服务。
按你的意图,似乎是应该查出0条记录,大概需要写成如下命令:
select number from ABC
where number IN ('1','4','6','13')
and exists( select 1 from ABC where number='1' )
and exists( select 1 from ABC where number='4' )
and exists( select 1 from ABC where number='6' )
and exists( select 1 from ABC where number='13' )
mysql中有4类运算符,它们是:
算术运算符
比较运算符
逻辑运算符
位操作运算符
算术操作符
算术操作符是SQL中最基本的操作运算符,主要有一下几种运算符:
+(加)、 -(减)、 *(乘)、 /(除)、 %(求余或者模)
比较运算符
一个比较运算符的结果总是1,0或者是NULL。MySQL中的比较运算符有:
=、=、 (!=)、=、=、、IS NULL、IS NOT NULL、LEAST、GREATEST、BETWEEN . . . AND. . . 、ISNULL、IN、NOT IN、LIKE、REGEXP
逻辑运算符
逻辑运算符的求值所得结果均为TRUE、FALSE或NULL。
逻辑运算符有:
NOT 或者 !
AND 或者
OR 或者 ||
XOR(异或)
位运算符
位运算符是用来对二进制字节中的位进行测试、移位或者测试处理。位运算符有:
位或(|)
位与()
位异或(^ )
位左移()
位右移()
位取反(~)
MySQL的逻辑分层只有四层
从客户端发起请求到服务端
client ==连接层 ==服务层==引擎层==存储层 server
连接层:连接与线程处理,这一层并不是MySQL独有,一般的基于C/S架构的都有类似组件,比如连接处理、授权认证、安全等。
服务层:包括缓存查询、解析器、优化器,这一部分是MySQL核心功能,包括解析、优化SQL语句,查询缓存目录,内置函数(日期、时间、加密等函数)的实现。
引擎层:负责数据存储,存储引擎的不同,存储方式、数据格式、提取方式等都不相同,这一部分也是很大影响数据存储与提取的性能的;对存储层的抽象。
存储层:存储数据,文件系统。
Mysql存储过程
1.创建存储过程语法(格式)
解析:
2.存储过程内具体语法与逻辑
A.定义变量语法:
注:可以在参数类型后面加 DEFAULT NULL; 来设置初始值。
B.变量赋值:
方式1(直接对变量进行赋值):
方式2(sql查询的结果直接赋值给变量):
方式3(sql查询的结果直接赋值给多个变量):
c.逻辑判断:
D.游标,(LOOP)循环:
3.存储过程的调用
4.删除存储过程
5.注意事项
存储过程中的分号(;)很重要,尽量不要省略。