1. 程式人生 > >SQL語句中的AND和OR執行順序問題

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語句andor怎麼同時使用

https://zhidao.baidu.com/question/460772793038730925.html邏輯:(A or B)and C 等於 包含了A和C的結果與B和C的結果; 用括號來代表集區分or 和 and; 其他的邏輯可以在資料庫裡試試,這樣可能自己最清楚

SQL語句ANDOR執行順序問題

情景:一個搜尋框 可以同時根據使用者賬號或者使用者名稱字 搜尋匹配條件的使用者 如果搜尋框中沒有搜尋條件 則查出所有教師使用者 遇到的問題: 查詢條件時為輸入框內的內容 先在資料庫中模擬測試 結果

sql語句 andor 的優先級

com info ima .com 分享 src 技術分享 sql 語句 sql語句中 and 與or 的優先級

sqlandor的優先順序

        首先and的優先順序大於or,通俗理解其實or查詢其實會把條件分為左右兩邊來查。         如 SELECT * FROM USER WHERE ID =

面試被問之-----sql優化in與exists的區別 Mysql in or exists not exists not in區別 (網路整理) Sql語句INexists的區別及應用 [筆記] SQL效能優化 - 避免使用 IN NOT IN

曾經一次去面試,被問及in與exists的區別,記得當時是這麼回答的:''in後面接子查詢或者(xx,xx,xx,,,),exists後面需要一個true或者false的結果",當然這麼說也不算錯,但別人想聽的是sql優化相關,肯定是效率的問題,只是那個時候確實不知道它們在sql優化上的區別,只知道用in會進

Sql語句INexists的區別及應用

應用場景 將不 集中 pre 代碼 根據 gif 效率 .cn   表展示     首先,查詢中涉及到的兩個表,一個user和一個order表,具體表的內容如下:     user表:          order表:        in     確定給定的值是否與子查

SQL語句existsin的區別

splay 比較 server for target 空值 不存在 依次 第一個 轉自https://www.cnblogs.com/liyasong/p/sql_in_exists.html 和 http://blog.csdn.net/lick4050312/artic

關於MySQLANDOR的優先順序的問題

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語句existsin的區別?

查詢中涉及到的兩個表,一個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列,但執行時語句

mybatissql語句的#$

一直寫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' )       判斷資料庫中

sqlandor執行效率

應用中發現sql中的and及or的執行效率問題 sql語句,為什麼把最後的or換成and,查詢的就很快,使用的是mssql範例中northwind資料庫為例, select * from Orders a left join [Order Details] b on a.or