關於Mysql中的不等於

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);

所以,同一字段聯合判斷要加()。

結語

什麼是國際知識點?唉!(戰術後仰)。學到的快拿出小本本記下來,要考的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章