0


MySQL中or用法及mybaits or用法总结

1.MySql中OR的用法

场景:筛选某表中,姓“张”并且为“组别1”或者是“组别2”的客户!(意在组1和组2中姓张客户的集合!)
错误sql:select*from 表 where name like ‘张%’ andgroup= ‘1’ orgroup= ‘2’;
错误原因:这里查的是组1中姓张的客户和组2的所有客户!
正确sql:select*from 表 where name like ‘张%’ and (group= ‘1’ orgroup=‘2’);
备注:要搞清楚是哪个条件和哪个条件“或”关系!
### 小结:
在SQL查询语句中,OR关键字用于连接两个或多个条件,表示满足其中一个条件即可。当使用OR时,如果第一个条件为真,则不会检查第二个条件;如果第一个条件为假,则会检查第二个条件。

例如,假设有一个名为employees的表,包含以下字段:id(员工ID)、name(员工姓名)和department(部门)。如果你想查询名字为"张三"的员工或者部门为"销售部"的员工,可以使用以下### 查询语句:SELECT * FROM employees WHERE name = '张三' OR department = '销售部';
这个查询语句将返回名字为"张三"的员工以及部门为"销售部"的员工的所有记录。

2.Mybatis中OR的用法

<iftest="condition.labelFlagInt != null and condition.labelFlagInt.size() > 0">
    AND 1=1 AND
    <foreachcollection="condition.labelFlagInt"item="flagInt"index="index"><choose><whentest="flagInt == 1">
                 (UNIX_TIMESTAMP(NOW()) &lt;= endTime AND ((endTime - UNIX_TIMESTAMP(NOW())) - ((endTime - createTime) * 0.2)) &gt;= 0)
            </when><whentest="flagInt == 2">
                 (UNIX_TIMESTAMP(NOW()) &lt; endTime AND (((endTime - UNIX_TIMESTAMP(NOW())) - ((endTime - createTime) * 0.2)) &lt;= 0))
            </when><whentest="flagInt == 3">
                 (UNIX_TIMESTAMP(NOW()) &gt;= endTime)
            </when></choose><iftest="index &lt; condition.labelFlagInt.size() - 1">OR</if></foreach></if>

这段代码的作用是根据

condition.labelFlagInt

列表中的值生成一个SQL查询语句的条件部分。具体来说:

  • condition.labelFlagInt是一个整数列表,表示不同的条件标志。
  • 如果condition.labelFlagInt不为空且其大小大于0,则执行以下操作: - 添加AND 1=1到查询语句中,这是一个恒成立的条件,确保至少有一个记录满足条件。- 使用<foreach>标签遍历condition.labelFlagInt列表中的每个元素。对于每个元素,根据其值选择相应的条件表达式。 - 如果值为1,则生成一个条件表达式,判断当前时间是否在指定的时间范围内。- 如果值为2,则生成一个条件表达式,判断当前时间是否小于指定的时间范围。- 如果值为3,则生成一个条件表达式,判断当前时间是否大于等于指定的时间范围。- 在每个条件表达式之间添加OR关键字,表示满足任意一个条件即可。- 最后,如果还有更多的元素需要处理,则在最后一个条件表达式之后添加OR关键字。

这样,根据

condition.labelFlagInt

列表中的值,生成的查询语句将包含相应的条件表达式,用于筛选符合条件的记录。

标签: mysql 数据库

本文转载自: https://blog.csdn.net/zhaozhangxiao2/article/details/136217689
版权归原作者 MissYou-Coding 所有, 如有侵权,请联系我们删除。

“MySQL中or用法及mybaits or用法总结”的评论:

还没有评论