想到是否包含,就想起來in,like查詢了,先說一下這倆的區別,這是表字段和數據
Like查詢
首先可能用的最多的LIKE 模糊查詢,這樣的數據不太精確,如果姓名有 “西貝小小鳳1,西貝小小鳳2” 這樣的也會查出來,數據不太准確
select * from table where field like '%西貝小小鳳%'
查詢結果
總結:Like模糊查詢,對字符沒有特殊限制,但是查詢不精確
IN查詢
select * from table where field in('西貝小小鳳','西貝','小小鳳')
查詢結果:
總結:in查詢,必須完全匹配,字段里面包含字符串也不可以
find_in_set查詢
最后大佬出馬,find_in_set,這個比較特殊,數據庫保存的格式必須是以","分割的,查詢比較精確
總結:find_in_set 是精確查詢,字段值以英文”,”分隔
我最近用哪個UNION ALL多個表連接查詢數據,發現在每條sql里面寫find_in_set不管用,最后發現需要這么寫才行
select * from ( select a.`id` id,a.`power` power from table1 a UNION ALL select b.`id` id,b.`power` power from table2 b UNION ALL select c.`id` id,c.`power` power from table3 c ) t WHERE find_in_set('西貝小小鳳', t.power);
要這么用哈,總覺得自己會MySQL,但是很多東西好像都不會啊啊啊啊啊啊,生活的變數太多,珍惜現在!!