SQL中or条件在括号里面和不在括号里面的区别

SQL中or条件在括号里面和不在括号里面的区别

写SQL时发现or条件在括号内和不在括号内查出的内容差异很大,例如:
SELECT * FROM Table_1 where name=‘王五’ and ( class=‘python’ or sex=‘男’)
SELECT * FROM Table_1 where name=‘王五’ and class=‘python’ or sex=‘男’

下面看个实例:

1.新建一个表
在这里插入图片描述
2.查询or在括号内的结果

SELECT   *  FROM  Table_1 where  name='王五'  and (class='JAVA'  or  sex='女')

在这里插入图片描述
分析:该sql查询出来的内容都是“王五”,但是把“王五、女、python”的内容也查出来了,所以在括号内的or是,满足前面条件name=‘王五’的前提下,符合or其中一个条件的内容都查出来。

3.查询or不带括号的结果

SELECT   *  FROM  Table_1 where  name='王五'  and class='python' or  sex='男'

在这里插入图片描述
分析:该sql把“王五、python”的信息都查出来了,并且还把“张三、男、java”信息也查出来了,因为他的sex=‘男’,所以不带括号的or是不管前置条件,只要符合or的条件都查询出来。
4.查询or不带括号的结果 ,把sex和class条件换一个位置

SELECT   *  FROM  Table_1 where  name='王五'    and  sex='男'   or class='python' 

在这里插入图片描述
分析:该sql把“王五”的信息都查出来了,并且还把“张三、女、python”信息也查出来了,因为他的class=‘python’,所以不带括号的or是不管前置条件,只要符合or的条件都查询出来。

总结

or条件写在括号里面是满足前面条件的前提下,符合其中一个or条件的内容都查出来;
or条件不加括号是不管前面的条件,只需要符合or条件的内容都查出来,查询结果等于前面的and条件加上单独符合or条件的内容。
如有不正确的位置,欢迎指正。

  • 13
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 MyBatis-Plus ,你可以使用 Lambda 表达式来构建复杂的 SQL 查询条件。如果你想在 SQL 查询条件括号,可以使用 Lambda 表达式的 `and` 和 `or` 方法来实现。 例如,假设你有一个用户表,希望查询年龄大于 18 岁或者名字以 "J" 开头的用户。你可以这样写: ``` List<User> users = userMapper.selectList(new QueryWrapper<User>() .lambda() .and(age -> age.ge(18)) .or(name -> name.likeRight("J%")) ); ``` 这样生成的 SQL 语句就会带上括号,类似这样: ``` SELECT * FROM user WHERE (age >= 18) OR (name LIKE 'J%') ``` 如果你想在条件嵌套更多的括号,可以使用 Lambda 表达式的 `and` 和 `or` 方法的重载版本,接受一个 `Function<QueryWrapper<T>, QueryWrapper<T>>` 类型的参数,这样就可以在括号内再嵌套一个 Lambda 表达式了。 例如,假设你想查询年龄大于 18 岁并且名字以 "J" 开头或者邮箱以 "example.com" 结尾的用户,你可以这样写: ``` List<User> users = userMapper.selectList(new QueryWrapper<User>() .lambda() .and(age -> age.ge(18)) .and(name -> name.likeRight("J%")) .or(query -> query.lambda() .and(email -> email.like("%example.com")) ) ); ``` 这样生成的 SQL 语句就会带上括号,类似这样: ``` SELECT * FROM user WHERE (age >= 18) AND (name LIKE ' ### 回答2: 使用Mybatis-Plus在SQL查询条件括号的方法是使用Wrapper构建查询条件,并使用lambda表达式和括号来组合条件。 首先,创建一个Wrapper对象,可以使用`QueryWrapper`或`LambdaQueryWrapper`来构建。以`LambdaQueryWrapper`为例: ```java LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>(); ``` 然后,在Wrapper对象使用lambda表达式来定义查询条件,并使用括号来分组条件。例如,查询年龄小于30或者姓名为"张三"的用户: ```java wrapper.and(w -> w.lt(User::getAge, 30).or().eq(User::getName, "张三")); ``` 在这个例子括号内的条件`.lt(User::getAge, 30)`表示查询年龄小于30,`.or()`表示或运算,`.eq(User::getName, "张三")`表示查询姓名为"张三"。整个表达式的意思是查询满足括号条件的用户。 最后,将Wrapper对象作为参数传递给Mybatis-Plus的查询方法,如`selectList()`、`selectOne()`等。 这样就可以在Mybatis-Plus使用括号来组合查询条件了。 ### 回答3: 在MyBatis-Plus,在SQL查询条件括号可以通过使用实体类的QueryWrapper对象来实现。QueryWrapper是MyBatis-Plus提供的一个查询封装类,可以方便地构建查询条件。 首先,需要创建一个QueryWrapper对象。可以使用QueryWrapper的构造函数创建一个空的QueryWrapper对象,然后使用它的方法来添查询条件。 然后,可以使用QueryWrapper对象提供的方法来添查询条件。例如,可以使用eq方法添等于条件,使用like方法添模糊查询条件。 如果需要在SQL查询条件括号,可以使用and方法或者or方法来将多个条件括号。例如,可以使用and方法将多个相等条件括号。 最后,调用MyBatis-Plus提供的mapper的select方法,将QueryWrapper对象作为参数传入,就可以执行查询操作。查询结果将会被封装成一个List集合返回。 综上所述,MyBatis-PlusSQL查询条件括号可以通过使用QueryWrapper对象来实现。通过构建QueryWrapper对象并使用它的方法来添查询条件,然后将QueryWrapper对象作为参数传入select方法进行查询操作。这样就可以在SQL查询条件括号实现更复杂的查询条件组合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值