一、起因
因为要查询两种状态的值,如果用普通的查询,需要查两次,再把两次查询的值放到一个集合中,再去重,这样查找非常麻烦,所以决定优化,使用SQL中的IN查询:
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
二、解决办法
这里,我要查询status=0和status=1的两种状态下的值;
SELECT * FROM jxdx_leave l
WHERE 1=1
AND l.deleted=0
AND l.`status` IN ('0','1');
这里的status带了引号,这是因为Navicat自动提示给的,就先用了;可以查到;后面括号内的0和1也都有引号,可以查到;
三、去掉引号:
SELECT * FROM jxdx_leave l
WHERE 1=1
AND l.deleted=0
AND l.status IN (0,1);
这里,我IN括号内的内容不带引号也是可以查到的;查到的内容和上面的一样,但是,在Mybatis中,带引号是查不到的,因为status是int类型,虽然Navicat帮我们去掉了引号,但是,还是得按照规矩来,是varchar类型用引号,是int类型,用整数,就一个字,稳;
欢迎关注我的公众号:
【幕桥社区】