技术点
in 的用法 类似于:
select * from t where (a,c) in ((a1,c2),(a2,c3));
首先:
in的单字段 匹配
select * from where a in (a1,a2,a3);
该语法中a 的 类型如果是 纯数字的,即使 01,02这种的字符串也是可以执行成功的,并且不需要加单引号.
如果是多字段匹配的时候,那么,如果只有一个匹配项,是没有问题的,也不用加单引号 类似于
select * from t where (a,c) in ((01,01));
但是如果是多个匹配项 则类型必须匹配上,必须得加上单引号,也就是说类似于下面的是查不出结果的
select * from t where (a,c) in ((01,01),(02,02));
必须写成:
select * from t where (a,c) in (('01','01'),('02','02'));
该语法也支持子查询匹配 类似于:
select * from t where (a,c) in (select n.a,n.c from n );
找了半天问题…
搞不懂,一个字段匹配多个的时候不加单引号都没有问题,多个字段匹配一种情况的时候没问题,多个字段匹配多个情况的时候就有问题,看来缺点都有的,某种意义上来说众生是平等的.
分享一个拉钩教育的mysql高性能实战视频,感觉还不错,可以mark一下,对数据这块还是可以有不错的提高的.