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