MySQL使用IF函數(shù)動(dòng)態(tài)執(zhí)行where條件的方法
IF函數(shù)
IF(expression ,expr_true, expr_false);
MySQL的IF()函數(shù),接受三個(gè)表達(dá)式,如果第一個(gè)表達(dá)式為true,而不是零且不為NULL,它將返回第二個(gè)表達(dá)式。否則,它返回第三個(gè)表達(dá)式。根據(jù)使用它的上下文,它返回?cái)?shù)字或字符串值。
IF函數(shù)在WHERE條件中的使用
先來(lái)看一個(gè)SQL:
select book_name,read_status from t_book;
結(jié)果如下:

read_status字段意思是閱讀狀態(tài),有以下幾個(gè)值: 0(未閱讀),1(閱讀中),2(已閱讀)。
下面使用IF函數(shù)來(lái)查詢(xún):
# 查詢(xún)未閱讀的book select book_name,read_status from t_book where IF(-1 = 0, true, read_status = 0);

# 查詢(xún)閱讀中的book select book_name,read_status from t_book where IF(-1 = 1, true, read_status = 1);

# 查詢(xún)已閱讀的book select book_name,read_status from t_book where IF(-1 = 2, true, read_status = 2);

# 查詢(xún)?nèi)康腷ook select book_name,read_status from t_book where IF(-1 = -1, true, read_status = -1);

JAVA使用
/**
* 根據(jù)閱讀狀態(tài)來(lái)查詢(xún)book
* @param readStatus
* @return
*/
@Query(value = "select book_name,read_status from t_book where IF(-1 = :readStatus, true, read_status = readStatus)", nativeQuery = true)
List<TBook> queryByReadStatus(@Param("readStatus") String readStatus);這樣可以通過(guò)傳入readStatus的值來(lái)控制是否執(zhí)行read_status條件,當(dāng)傳值為-1時(shí),不執(zhí)行read_status = -1 條件,而是執(zhí)行 true,相當(dāng)于忽略了read_status條件,達(dá)到查詢(xún)?nèi)繝顟B(tài)的book目的。
到此這篇關(guān)于MySQL使用IF函數(shù)來(lái)動(dòng)態(tài)執(zhí)行where條件的文章就介紹到這了,更多相關(guān)MySQL動(dòng)態(tài)執(zhí)行where條件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mysql?InnoDB聚簇索引二級(jí)索引聯(lián)合索引特點(diǎn)
這篇文章主要為大家介紹了Mysql?InnoDB聚簇索引二級(jí)索引聯(lián)合索引特點(diǎn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
idea 設(shè)置MySql主鍵的實(shí)現(xiàn)步驟
在IDE開(kāi)發(fā)工具中也是可以使用mysql的,本文主要介紹了idea 設(shè)置MySql主鍵的實(shí)現(xiàn)步驟,文中通過(guò)圖文的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-03-03
利用Mysql定時(shí)+存儲(chǔ)過(guò)程創(chuàng)建臨時(shí)表統(tǒng)計(jì)數(shù)據(jù)的過(guò)程
這篇文章主要介紹了利用Mysql定時(shí)+存儲(chǔ)過(guò)程創(chuàng)建臨時(shí)表統(tǒng)計(jì)數(shù)據(jù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
淺談MySQL數(shù)據(jù)庫(kù)表鎖了怎么解鎖
在使用 MySQL 數(shù)據(jù)庫(kù)時(shí),有時(shí)候會(huì)發(fā)生某個(gè)表被鎖住的情況,這可能會(huì)導(dǎo)致其他用戶無(wú)法對(duì)該表進(jìn)行讀寫(xiě)操作,影響系統(tǒng)的正常運(yùn)行,本文主要介紹了淺談MySQL數(shù)據(jù)庫(kù)表鎖了怎么解鎖,感興趣的可以了解一下2023-10-10
Keepalived+HAProxy實(shí)現(xiàn)MySQL高可用負(fù)載均衡的配置
這篇文章主要介紹了keepalived+haproxy實(shí)現(xiàn)MySQL高可用負(fù)載均衡的配置方法,通過(guò)這兩個(gè)軟件可以有效地使MySQL脫離故障及進(jìn)行健康檢測(cè),需要的朋友可以參考下2016-02-02
MySQL主從同步設(shè)置中主服務(wù)器二進(jìn)制日志無(wú)法開(kāi)啟的問(wèn)題
這篇文章主要介紹了MySQL主從同步設(shè)置中主服務(wù)器二進(jìn)制日志無(wú)法開(kāi)啟的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
MySQL派生表聯(lián)表查詢(xún)實(shí)戰(zhàn)過(guò)程
派生表是查詢(xún)結(jié)果組成的虛擬表,派生表是在外部查詢(xún)的FROM子句中定義的,不需要手動(dòng)創(chuàng)建,下面這篇文章主要給大家介紹了關(guān)于MySQL派生表聯(lián)表查詢(xún)的相關(guān)資料,需要的朋友可以參考下2022-03-03
兩種方法實(shí)現(xiàn)mysql分組計(jì)數(shù),范圍匯總
這篇文章主要介紹了兩種方法實(shí)現(xiàn)mysql分組計(jì)數(shù),范圍匯總,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07

