解決mysql 組合AND和OR帶來的問題

2022-09-24 17:51:12 字數 1330 閱讀 8072

如下所示:

select prod_name,prod_price from products where vend_id = 1002 or vend_id= 1003 and prod_price >= 10;

上面這條語句 返回的結果不是我們想要的。

分析:原因在於計算的次序。sql 在處理or操作符前 優先處理and操作符。當sqk看到上述where子句時,由於and在計算次序中優先順序更高,操作符被錯誤的組合了。

此問題的解決方法是使用圓括號明確地分組相應的操作符。

請看下面的select 語句erwtpdcut

select prod_name,prod_price

from products

where( vend_id = 1002 or vend_id= 1003) and prod_price >= 10;

補充知識:mysql| 組合where子句過濾資料(and,or,in,not)

mysql 允許使用多個where子句,組合where子句允許使用兩種方式使用:and 和or子句的方式使用.

資料庫中的操作符號:and , or , in not.

and:

select * fr程式設計客棧om products where products.vend_id = 1003 and products.prod_price <= 10;

or:select * from products where products.vend_id = 1002 or products.vend_id = 1003 ;

in:建議能使用in的子句中不使用or,in行效能好,方便理解.

select * from products where products.vend_id in (1002,1003);

not:

mysql對not的支援僅在對in,between,exists子句取反,這與其他多數資料庫對各種條件都支援不同.

select from products where products.vend_id not in (1002,1003);

注意:在同時有and和or的子句中,mysql是優先處理and操作的.一般建議使用()來確定處理順序和消除歧義.

比如:select * from products where (products.vend_id= 1002 or products.vend_id=1003) and prod_price >= 10;

以上這篇解決mysql 組合and和o帶來的問題就是小編分享給大家的全部內容了,希望能給大家乙個參考,也希望大家多多支援我們。

本文標題: 解決mysql 組合and和or帶來的問題

本文位址:

mysql 組合查詢 mysql組合查詢

使用union 多數sql查詢都只包含乙個或多個表中返回資料的單條select語句。mysql也允許執行多個查詢 多條select語句 並將結果作為單個查詢結果集返回。這些組合查詢通常稱為並 union 有兩種情況需要使用組合查詢 在單個表查詢中從不同的表返回類似結構的資料 對單個表執行多個查詢,按...

mysql的組合索引 mysql 組合索引

mysql單列索引是我們使用mysql資料庫中經常會見到的,mysql單列索引和組合索引的區別可能有很多人還不是十分的了解,下面就為您分析兩者的主要區別,供您參考學習。為了形象地對比兩者,再建乙個表 create table myindex i testid int not null auto in...

MySQL單列索引和組合索引

單列索引,顧名思義也就是只有乙個欄位的索引列。組合索引,又稱復合索引,兩個或更多個列上的索引被稱作復合索引。對於復合索引,他們都遵循左側原則,也是就是說乙個查詢可以只使用復合索引最左側的一部份。例如索引是key index a,b,c 可以支援a a,b a,b,c 3種組合進行查詢,但不支援 b,...