Mysql查詢用逗號分隔的欄位-字串函數FIND_IN_SET(),以及此函數與in()函數的區別

來源:互聯網
上載者:User

標籤:

      查詢用逗號分隔的欄位,可以用字串函數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;

Mysql查詢用逗號分隔的欄位-字串函數FIND_IN_SET(),以及此函數與in()函數的區別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.