查詢用逗號分隔的字段,可以用字符串函數FIND_IN_SET();
查詢數據庫表中某個字段(值分行顯示),可以用函數in()。
今天工作中遇到一個問題,就是用FIND_IN_SET()函數解決的。
第一部分:
FIND_IN_SET()函數用法,
查詢用逗號分隔的字段,
表A中 go_value字段的值是以逗號分割,
查詢 go_value字段中含有3的行:
select * from A where find_in_set('3', go_value);
第二部分:
in()函數用法
查詢數據庫表中某個字段(值分行顯示),
表B中 prov字段的值是分行顯示,
查詢 湖北省,天津市的gid數目
select count(distinct(gid)) from B where prov in ("湖北省","天津市");
第三部分:
查詢在湖北省,天津市的gid,但這些gid不在A表中的id為1的go_value字段里(這種情況,特別是當A表中id為1的go_value中值非常多,或者需要多個go_value值時,非常適用)
select b.gid from (SELECT gid FROM B where prov IN ("湖北省","天津市") ) b left outer join
(select go_value as gid FROM A WHERE id='1') a on FIND_IN_SET(b.gid,a.gid) where a.gid is null;
第四部分:
補充說明:
只顯示左連接查詢不到的值,即顯示A表存在,但B表不存在的值:
select A.no,A.name,B.score from A left join B on A.no=B.no
where b.score is null;