mysql数据库多字段in写法

前言

经常在写sql语句的时候会用到in的用法,以下内容讲解多个字段如何同时使用in,以下内容基于mysql 8.0进行讲解。

mysql多字段in写法

需求:
查询用户表中姓名=张三,年龄11岁及姓名=李四,年龄12岁的用户

普通写法:

select * from user where (user_name = '张三' and age = 11) or (user_name = '李四' and age = 12);

    
    

    sql示例1:

    select * from user where (user_name,user_age) in (('张三',11),('李四',12));
    
        
        

      说明:以上语句查询是否存在姓名为张三,年龄11及姓名李四,年龄12岁的用户

      sql示例2:

      select * from user where (user_name,user_age) in (select user_name,user_age from user_info where user_name = '张三');
      
          
          

        说明:当in后面的内容是另一个select查询的结果,只需要查询结果的外面有括号即可,如上图所示

        mybatis多字段in写法

        dao层

        List<UserDto> selectByUserNameAndAge(List<User> list);
        
            
            

          mapper.xml

          <select id="selectByUserNameAndAge" resultMap="UserMap" parameterType="java.util.List">
              select *
              from user
              where (user_name,user_age) in (
              <foreach collection="list" item="item" separator=",">
                (#{item.user_name},#{item.user_age})
              </foreach>
              )
            </select>
          
              
              
          评论
          添加红包

          请填写红包祝福语或标题

          红包个数最小为10个

          红包金额最低5元

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

          抵扣说明:

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

          余额充值