Mysql查询用逗号分隔的字段-字符串函数FIND_IN_SET(),以及此函数与in()函数的区别...

本文介绍了如何使用FIND_IN_SET()函数查询包含特定值的记录,并利用in()函数进行多值匹配。此外,还提供了如何结合这两个函数来实现复杂查询的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

转载于:https://www.cnblogs.com/zxmceshi/p/5479892.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值