Mysql的不等于:!=和<>
用法:
select * from tab_name where column_name != 'value';
select * from tab_name where column_name <> 'value';
我只想说,对于不等于来说,这两种方式都可行。查出来的数据是一样的,但是我这边要给大家说一种情况。
一个不等于判断条件查不出NUll数据
例:
mysql中有一个t_user表,其中有id, username,password字段,有以下几条数据
id username password
1 xiaoming1 password
2 xiaoming2 123
3 xiaoming3 NULL
4 xiaoming4 123
5 xiaohong NULL
1.查出password不等于123的数据,预期结果:第1,3,5这3条数据
select * from t_user where password != 123;
-- 或
select * from t_user where password <> 123;
结果:只查出了一条数据
id username password
1 xiaoming1 password
两种写法查出来的数据一样,问题显而易见,没有查出来password是NUll的数据。
解决方法:加入NULL值判断
select * from t_user where password != 123 or password is NULL;
-- 或
select * from t_user where password <> 123 or password is NULL;
2.查出username中包含xiaoming且password不等于123的数据
select * from t_user where username like '%xiaoming%' and password != 123 or password is NULL;
-- 或
select * from t_user where username like '%xiaoming%' and password <> 123 or password is NULL;
结果
1 xiaoming1 password
3 xiaoming3
5 xiaohong
哪来的xiaohong啊喂?正确写法
select * from t_user where username like '%xiaoming%' and (password <> 123 or password is NULL);
-- 或
select * from t_user where username like '%xiaoming%' and (password <> 123 or password is NULL);
所以,同一字段联合判断要加()。
结语
什么是国际知识点?唉!(战术后仰)。学到的快拿出小本本记下来,要考的。