MySQL中or用法及mybatis or用法詳解
1.MySql中OR的用法
場(chǎng)景:篩選某表中,姓“張”并且為“組別1”或者是“組別2”的客戶?。ㄒ庠诮M1和組2中姓張客戶的集合?。?br />錯(cuò)誤sql:select * from 表 where name like ‘張%’ and group = ‘1’ or group = ‘2’;
錯(cuò)誤原因:這里查的是組1中姓張的客戶和組2的所有客戶!
正確sql:select * from 表 where name like ‘張%’ and (group = ‘1’ or group =‘2’);
備注:要搞清楚是哪個(gè)條件和哪個(gè)條件“或”關(guān)系!
### 小結(jié):
在SQL查詢語(yǔ)句中,OR關(guān)鍵字用于連接兩個(gè)或多個(gè)條件,表示滿足其中一個(gè)條件即可。當(dāng)使用OR時(shí),如果第一個(gè)條件為真,則不會(huì)檢查第二個(gè)條件;如果第一個(gè)條件為假,則會(huì)檢查第二個(gè)條件。例如,假設(shè)有一個(gè)名為employees的表,包含以下字段:id(員工ID)、name(員工姓名)和department(部門)。如果你想查詢名字為"張三"的員工或者部門為"銷售部"的員工,可以使用以下### 查詢語(yǔ)句:SELECT * FROM employees WHERE name = '張三' OR department = '銷售部';
這個(gè)查詢語(yǔ)句將返回名字為"張三"的員工以及部門為"銷售部"的員工的所有記錄。
2.Mybatis中OR的用法
<if test="condition.labelFlagInt != null and condition.labelFlagInt.size() > 0"> AND 1=1 AND <foreach collection="condition.labelFlagInt" item="flagInt" index="index"> <choose> <when test="flagInt == 1"> (UNIX_TIMESTAMP(NOW()) <= endTime AND ((endTime - UNIX_TIMESTAMP(NOW())) - ((endTime - createTime) * 0.2)) >= 0) </when> <when test="flagInt == 2"> (UNIX_TIMESTAMP(NOW()) < endTime AND (((endTime - UNIX_TIMESTAMP(NOW())) - ((endTime - createTime) * 0.2)) <= 0)) </when> <when test="flagInt == 3"> (UNIX_TIMESTAMP(NOW()) >= endTime) </when> </choose> <if test="index < condition.labelFlagInt.size() - 1">OR</if> </foreach> </if>
這段代碼的作用是根據(jù)condition.labelFlagInt
列表中的值生成一個(gè)SQL查詢語(yǔ)句的條件部分。具體來(lái)說(shuō):
- condition.labelFlagInt是一個(gè)整數(shù)列表,表示不同的條件標(biāo)志。
- 如果condition.labelFlagInt不為空且其大小大于0,則執(zhí)行以下操作:
- 添加AND 1=1到查詢語(yǔ)句中,這是一個(gè)恒成立的條件,確保至少有一個(gè)記錄滿足條件。
- 使用<foreach>標(biāo)簽遍歷condition.labelFlagInt列表中的每個(gè)元素。對(duì)于每個(gè)元素,根據(jù)其值選擇相應(yīng)的條件表達(dá)式。
- 如果值為1,則生成一個(gè)條件表達(dá)式,判斷當(dāng)前時(shí)間是否在指定的時(shí)間范圍內(nèi)。
- 如果值為2,則生成一個(gè)條件表達(dá)式,判斷當(dāng)前時(shí)間是否小于指定的時(shí)間范圍。
- 如果值為3,則生成一個(gè)條件表達(dá)式,判斷當(dāng)前時(shí)間是否大于等于指定的時(shí)間范圍。
- 在每個(gè)條件表達(dá)式之間添加OR關(guān)鍵字,表示滿足任意一個(gè)條件即可。
- 最后,如果還有更多的元素需要處理,則在最后一個(gè)條件表達(dá)式之后添加OR關(guān)鍵字。
這樣,根據(jù)condition.labelFlagInt
列表中的值,生成的查詢語(yǔ)句將包含相應(yīng)的條件表達(dá)式,用于篩選符合條件的記錄。
到此這篇關(guān)于MySQL中or用法及mybatis or用法總結(jié)的文章就介紹到這了,更多相關(guān)mysql or用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL Flink Watermark實(shí)現(xiàn)事件時(shí)間處理的關(guān)鍵技術(shù)
Flink Watermark是Flink流處理框架中實(shí)現(xiàn)事件時(shí)間處理的關(guān)鍵技術(shù)之一。它是通過(guò)一種機(jī)制來(lái)解決數(shù)據(jù)亂序和延遲的問(wèn)題,使得Flink可以在處理遲到的數(shù)據(jù)時(shí)保證結(jié)果的準(zhǔn)確性。Flink Watermark可以在數(shù)據(jù)流中插入一個(gè)時(shí)間戳,將數(shù)據(jù)流轉(zhuǎn)化為具有時(shí)間維度的數(shù)據(jù)集合2023-05-05詳細(xì)深入聊一聊Mysql中的int(1)和int(11)
mysql數(shù)據(jù)庫(kù)作為當(dāng)前常用的關(guān)系型數(shù)據(jù)庫(kù),肯定會(huì)遇到設(shè)計(jì)表的需求,下面對(duì)設(shè)計(jì)表時(shí)int類型的設(shè)置進(jìn)行分析,下面這篇文章主要給大家介紹了關(guān)于Mysql中int(1)和int(11)的相關(guān)資料,需要的朋友可以參考下2022-08-08小心陷阱!MySQL中處理Null時(shí)需注意兩點(diǎn)
這篇文章主要為大家介紹了MySQL中處理Null時(shí)需注意的兩點(diǎn),很關(guān)鍵的兩點(diǎn),大家千萬(wàn)要小心2016-06-06數(shù)據(jù)庫(kù)的用戶帳號(hào)管理基礎(chǔ)知識(shí)
數(shù)據(jù)庫(kù)的用戶帳號(hào)管理基礎(chǔ)知識(shí)...2006-11-11