MySQL中or用法及mybatis or用法詳解
1.MySql中OR的用法
場景:篩選某表中,姓“張”并且為“組別1”或者是“組別2”的客戶?。ㄒ庠诮M1和組2中姓張客戶的集合?。?br />錯誤sql:select * from 表 where name like ‘張%’ and group = ‘1’ or group = ‘2’;
錯誤原因:這里查的是組1中姓張的客戶和組2的所有客戶!
正確sql:select * from 表 where name like ‘張%’ and (group = ‘1’ or group =‘2’);
備注:要搞清楚是哪個條件和哪個條件“或”關(guān)系!
### 小結(jié):
在SQL查詢語句中,OR關(guān)鍵字用于連接兩個或多個條件,表示滿足其中一個條件即可。當(dāng)使用OR時(shí),如果第一個條件為真,則不會檢查第二個條件;如果第一個條件為假,則會檢查第二個條件。例如,假設(shè)有一個名為employees的表,包含以下字段:id(員工ID)、name(員工姓名)和department(部門)。如果你想查詢名字為"張三"的員工或者部門為"銷售部"的員工,可以使用以下### 查詢語句:SELECT * FROM employees WHERE name = '張三' OR department = '銷售部';
這個查詢語句將返回名字為"張三"的員工以及部門為"銷售部"的員工的所有記錄。
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列表中的值生成一個SQL查詢語句的條件部分。具體來說:
- condition.labelFlagInt是一個整數(shù)列表,表示不同的條件標(biāo)志。
- 如果condition.labelFlagInt不為空且其大小大于0,則執(zhí)行以下操作:
- 添加AND 1=1到查詢語句中,這是一個恒成立的條件,確保至少有一個記錄滿足條件。
- 使用<foreach>標(biāo)簽遍歷condition.labelFlagInt列表中的每個元素。對于每個元素,根據(jù)其值選擇相應(yīng)的條件表達(dá)式。
- 如果值為1,則生成一個條件表達(dá)式,判斷當(dāng)前時(shí)間是否在指定的時(shí)間范圍內(nèi)。
- 如果值為2,則生成一個條件表達(dá)式,判斷當(dāng)前時(shí)間是否小于指定的時(shí)間范圍。
- 如果值為3,則生成一個條件表達(dá)式,判斷當(dāng)前時(shí)間是否大于等于指定的時(shí)間范圍。
- 在每個條件表達(dá)式之間添加OR關(guān)鍵字,表示滿足任意一個條件即可。
- 最后,如果還有更多的元素需要處理,則在最后一個條件表達(dá)式之后添加OR關(guān)鍵字。
這樣,根據(jù)condition.labelFlagInt列表中的值,生成的查詢語句將包含相應(yīng)的條件表達(dá)式,用于篩選符合條件的記錄。
到此這篇關(guān)于MySQL中or用法及mybatis or用法總結(jié)的文章就介紹到這了,更多相關(guān)mysql or用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql使用xtrbackup+relaylog增量恢復(fù)注意事項(xiàng)
這篇文章主要介紹了mysql使用xtrbackup+relaylog增量恢復(fù),本次實(shí)驗(yàn)mysql5.7.19.使用了GTID,row格式的binlog,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05
解決phpstudy無法啟動MySQL服務(wù)的三種方法小結(jié)
本文主要介紹了光速解決phpstudy無法啟動MySQL服務(wù)的三種方法小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-09-09
MySQL curdate()函數(shù)的實(shí)例詳解
這篇文章主要介紹了MySQL curdate()函數(shù)的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家理解應(yīng)用MysqL curdate()的使用方法,需要的朋友可以參考下2017-09-09
django2.2版本連接mysql數(shù)據(jù)庫的方法
這篇文章主要介紹了django2.2版本如何連接mysql數(shù)據(jù)庫,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10

