SQL語句中的AND和OR執行順序問題
情景:一個搜尋框 可以同時根據使用者賬號或者使用者名稱字 搜尋匹配條件的使用者
如果搜尋框中沒有搜尋條件 則查出所有教師使用者
遇到的問題:
查詢條件時為輸入框內的內容 先在資料庫中模擬測試 結果查詢結果不符合
分析:
問題的關鍵就在於AND和OR的執行順序問題。
查閱資料,關係型運算子優先順序高到低為:NOT>AND>OR
如果where 後面有OR條件的話,則OR自動會把左右的查詢條件分開。
所以最終結果
select Id ,userName,userAccount,userPassword,role,del from tb_user WHERE (userAccount like "%"'2'"%" or userName like "%"'2'"%") AND role= 2 and del = 1
或者
select Id ,userName,userAccount,userPassword,role,del from tb_user WHERE role= 2 and del = 1 and
userAccount like "%"'2'"%" or userName like "%"'2'"%")
相關推薦
sql語句中and和or怎麼同時使用
https://zhidao.baidu.com/question/460772793038730925.html邏輯:(A or B)and C 等於 包含了A和C的結果與B和C的結果; 用括號來代表集區分or 和 and; 其他的邏輯可以在資料庫裡試試,這樣可能自己最清楚
SQL語句中的AND和OR執行順序問題
情景:一個搜尋框 可以同時根據使用者賬號或者使用者名稱字 搜尋匹配條件的使用者 如果搜尋框中沒有搜尋條件 則查出所有教師使用者 遇到的問題: 查詢條件時為輸入框內的內容 先在資料庫中模擬測試 結果
sql語句中 and 與or 的優先級
com info ima .com 分享 src 技術分享 sql 語句 sql語句中 and 與or 的優先級
sql中and和or的優先順序
首先and的優先順序大於or,通俗理解其實or查詢其實會把條件分為左右兩邊來查。 如 SELECT * FROM USER WHERE ID =
面試被問之-----sql優化中in與exists的區別 Mysql中 in or exists not exists not in區別 (網路整理) Sql語句中IN和exists的區別及應用 [筆記] SQL效能優化 - 避免使用 IN 和 NOT IN
曾經一次去面試,被問及in與exists的區別,記得當時是這麼回答的:''in後面接子查詢或者(xx,xx,xx,,,),exists後面需要一個true或者false的結果",當然這麼說也不算錯,但別人想聽的是sql優化相關,肯定是效率的問題,只是那個時候確實不知道它們在sql優化上的區別,只知道用in會進
Sql語句中IN和exists的區別及應用
應用場景 將不 集中 pre 代碼 根據 gif 效率 .cn 表展示 首先,查詢中涉及到的兩個表,一個user和一個order表,具體表的內容如下: user表: order表: in 確定給定的值是否與子查
SQL語句中exists和in的區別
splay 比較 server for target 空值 不存在 依次 第一個 轉自https://www.cnblogs.com/liyasong/p/sql_in_exists.html 和 http://blog.csdn.net/lick4050312/artic
關於MySQL中AND和OR的優先順序的問題
SQL比知必會一書中寫到:在使用AND和OR的時候,儘量用括號使語句的意思表達明白。 Mysql資料庫會優先處理AND操作符 但是博主在實際中被問到了這個問題,所以就探究了下MySQL資料庫中的AND和OR的優先順序問題 先看下實際表資料 語句如下: selec
實習工作中Sql 語句中 IN 和 EXISTS 的心得體會
在學校時做專案時資料庫表少而且資料量也不大,做子查詢的時候一般沒有什麼區別,所以一直以來沒有注意過這個問題。 如今工作後,讓我實現政府執法人員執政編號的修改,用IN做子查詢時發現效率特別慢,最後發現是因為IN語句中查詢順序不同導致的。 IN 語句:只執行一次 &n
python中 and 和 or 運算的核心思想 ——— 短路邏輯
包含一個邏輯運算子 首先從基本的概念著手,python中哪些物件會被當成 False 呢?而哪些又是 True 呢? 在Python中,None、任何數值型別中的0、空字串“”、空元組()、空列表[]、空字典{}都被當作False,還有自定義型別,如果實現了
SQL語句中exists和in的區別?
查詢中涉及到的兩個表,一個books和一個borrow表,具體表的內容如下: 書單(books)表: 借書表borrow IN 一、確定給定的值是否與子查詢或列表中的值相匹配。in在查詢的時候,首先查詢子查詢的表,然後將內表和外表做一個笛卡爾
SQL語句巢狀時的執行順序
1.原語句:SELECT ID,NAME,STATES,(SELECT STATES FROM ITEM WHERE ID=T.ITEM_ID) AS ITEM_END_FLAGFROM RESULT TWHERE 1=12.ITEM表中實際沒有STATES列,但執行時語句
mybatis中sql語句中的#和$
一直寫mybatis的sql語句,當時想只要實現它的功能就行了,也沒過多的去理解; 首先我們大家都知道#和$都是用來傳值的,但他們之間是怎麼區分的呢?什麼時候用哪個好呢? 1、#將傳入的資料都當成字串
Python 中 and 和 or 的使用
and: python 中的and從左到右計算表示式,若所有值均為真,則返回最後一個值,若存在假,返回第一個假值。 or: or也是從左到有計算表示式,返回第一個為真的值。 文字可能有些繞,可以看下面
sql語句not and or執行順序
前言 今天的程式碼中很悲催的出現了資訊洩漏的情況,開始我怎麼都不肯相信,首先自信自己的程式設計技術,其次自信自己對業務邏輯的理解,最後徹查程式碼的時候,卻發現問題出現在sql語句的邏輯判斷上,這裡記錄
sql的where語句中同時用到 AND 和 OR
PO.ProgressCode = @progressCode AND (PO.ProgressCode = @progressCode OR PO.ProgressCode = ''WORKI
sql語句中同時使用AND 和 OR 關鍵字即兩者優先順序問題
在ORACLE 資料庫中 通過AND 關鍵字 和 OR同時進行條件查詢時出現了意外的資料,我的sql是這樣的: select red_book_type ,send_flag from red_mess_stat where red_book_type = ‘1
SQL語句中的or、in、and
今天做專案需要根據使用者輸入的資訊進行過濾,但不確定是哪個欄位的值, 因此需要用到查詢語句SQL中的or關鍵字 由於第一次使用,不熟悉,導致出現了問題,網上檢索後才知道是因為優先順序的問題 or的優先
奇怪!同一條sql語句在資料庫和程式碼中執行結果不同?!當然是人錯了 ……
sql語句就是它: select count(1) from syscolumns where [id]=object_id( 'tablecommon' ) 判斷資料庫中
sql中and及or 的執行效率
應用中發現sql中的and及or的執行效率問題 sql語句,為什麼把最後的or換成and,查詢的就很快,使用的是mssql範例中northwind資料庫為例, select * from Orders a left join [Order Details] b on a.or