遇到一个问题,在mysql的查询的where条件中同时使用了,关键字or和like
select * from a where a.name = '3' or a.name = '4' and a.age like '%5%';
运行sql时发现数据错误,出现了没有满足like条件的数据,发现原来是因为关键字or的原因,
sql查询时,数据只要满足or其中的一个条件数据就会保存到结果集中,导致出现了满足or条件而没有满足like条件的数据。
解决办法
1.方法一
sql应该修改将or改变为in
select * from a where a.name in(‘3’,‘4’) and a.age like '%5%';
2.方法二
使用关键字union
select * from a where a.name = '3' and a.age like '%5%';
union
select * from a where a.name = '4' and a.age like '%5%';
总结:使用in比较好一点,这个错误也是对于关键字or 的一个不熟练。