zoukankan      html  css  js  c++  java
  • Mysql查询用逗号分隔的字段-字符串函数FIND_IN_SET(),以及此函数与in()函数的区别

          查询用逗号分隔的字段,可以用字符串函数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;

  • 相关阅读:
    JS 获取鼠标位置
    Asp 2.0动态加载用户控件(Ascx)
    水晶报表学习之三(参数传递问题)
    C#中分割字符串的几种方法
    StringUtils类使用
    页面自动刷新,HTML代码,呵呵,可以去刷新人气拉!
    水晶报表预览时有线条,打印的时候无线条,这个该怎么处理?
    Online、Interline的意思。
    linux下的g++编译【转载】
    c++中const与指针总结
  • 原文地址:https://www.cnblogs.com/zxmceshi/p/5479892.html
Copyright © 2011-2022 走看看