如何在MySQL中选择具有多个AND / OR语句的行?

时间:2019-07-15 15:53:43

标签: mysql sql

我的数据集中有以下几列:

.1. Goal
.2. Quarter
.3. Year

我有4个季度:1,2,3,4

我有4年:2015、2016、2017、2018

我要选择除2019-QTR3和2019-QTR4以外的所有目标

我使用了Where语句,例如:

SELECT * from Table
WHERE 
(`Year` <> "2019" and `Quarter Name` <> "QTR3")
OR (`Year` <> "2019" and `Quarter Name` <> "QTR4")

但是结果是,没有选择所有以年为2019年或以QTR3或QTR4为季度的行,这不是我想要的

SELECT
* FROM Table

WHERE 
(`Year` <> "2019" and `Quarter Name` <> "QTR3")
OR (`Year` <> "2019" and `Quarter Name` <> "QTR4")

我的查询结果根本不包括2019年。它们也根本不包括QTR3和ATR4(与年份无关)。我不要那个

3 个答案:

答案 0 :(得分:0)

您的要求是:

True

或使用IN运算符:

SELECT * from Table
WHERE 
NOT (`Year` = "2019" AND `Quarter Name` = "QTR3")
AND
NOT (`Year` = "2019" AND `Quarter Name` = "QTR4")

等效于:

SELECT * from Table
WHERE NOT (`Year` = "2019" AND `Quarter Name` IN ("QTR3", "QTR4"))

或:

SELECT * from Table
WHERE 
(`Year` <> "2019" OR `Quarter Name` <> "QTR3")
AND
(`Year` <> "2019" OR `Quarter Name` <> "QTR4")

答案 1 :(得分:0)

  

我要选择除2019-QTR3和2019-QTR4以外的所有目标

您可以将NOT IN与元组一起使用:

SELECT * from `Table`
WHERE (`Year`, `Quarter Name`) NOT IN ( ('2019', 'QTR3'),  ('2019', 'QTR3'))

答案 2 :(得分:-1)

如果您这样做

SELECT * from Table WHERE Year <> "2019" or (Quarter Name <> "QTR3" AND Quarter Name <> "QTR4")

应该为您解决。 编辑