SQL - 与或组合
SQL - AND OR combination
这个查询有效
SELECT *
FROM ALL
WHERE Date >= '2017-04-04 00:00:00'
AND
CONFIDENCE <> 'Discarded'
AND
CONTEXT <>'Home'
我希望能够说:
并且 (CONTEXT <> 'Home') OR (CONTEXT = 'Hospital' AND LOCAL = 1)
这样我就可以select所有记录
要么从 2017 年 4 月开始,不丢弃,上下文不等于 home
或
从 2017 年 4 月开始,不丢弃,或者上下文 = hospital 和 local = 1。
我正在使用 ArcGIS。
我试过这个:
"DATE_ENTER" >= date '2017-04-04 00:00:00'
AND
"CONFIDENCE" <> 'Discarded'
AND
(
("CONTEXT" <> 'Home address') OR ("CONTEXT" = 'Hospital' AND "LOCAL" = 1)
)
但仍有 Context = Hospital 和 Local = 0 的记录
我测试的时候
("CONTEXT" <> 'Home address')
或
("CONTEXT" = 'Hospital' AND "LOCAL" = 1)
单独使用,它可以工作,我无法将两者结合起来提供我需要的东西。
我看过这个
第一。
我想你真的想要:
WHERE Date >= '2017-04-04' AND -- time component is unnecessary
CONFIDENCE <> 'Discarded' AND
CONTEXT <> 'Home' AND
(NOT (CONTEXT = 'Hospital' AND LOCAL = 1) )
当CONTEXT = 'Hospital'
时,则不等于'Home'
。所以,它仍然符合 CONTEXT
.
的条件
我觉得条件应该是这样的:
...
AND
(
("CONTEXT" <> 'Home address' AND "CONTEXT" <> 'Hospital')
OR ("CONTEXT" = 'Hospital' AND "LOCAL" = 1)
)
当您使用 ("CONTEXT" <> 'Home address') OR ("CONTEXT" = 'Hospital' AND "LOCAL" = 1)
时,由于第一个条件 "CONTEXT" <> 'Home address'
,您得到的结果 But there are still records with Context = Hospital and Local = 0
是正确的
(CONTEXT NOT IN('Hospital' , 'Home') OR (CONTEXT = 'Hospital' AND LOCAL= 1))
WHERE Date >= '2017-04-04' AND -- time component is unnecessary
CONFIDENCE <> 'Discarded' AND
CONTEXT <> 'Home' AND NOT(CONTEXT = 'Hospital' AND LOCAL = 0)
有效
和
一样
WHERE Date >= '2017-04-04' AND -- time component is unnecessary
CONFIDENCE <> 'Discarded'
AND
(
("CONTEXT" <> 'Home address' AND "CONTEXT" <> 'Hospital')
OR ("CONTEXT" = 'Hospital' AND "LOCAL" = 1)
)
这个查询有效
SELECT *
FROM ALL
WHERE Date >= '2017-04-04 00:00:00'
AND
CONFIDENCE <> 'Discarded'
AND
CONTEXT <>'Home'
我希望能够说:
并且 (CONTEXT <> 'Home') OR (CONTEXT = 'Hospital' AND LOCAL = 1)
这样我就可以select所有记录 要么从 2017 年 4 月开始,不丢弃,上下文不等于 home
或
从 2017 年 4 月开始,不丢弃,或者上下文 = hospital 和 local = 1。
我正在使用 ArcGIS。 我试过这个:
"DATE_ENTER" >= date '2017-04-04 00:00:00'
AND
"CONFIDENCE" <> 'Discarded'
AND
(
("CONTEXT" <> 'Home address') OR ("CONTEXT" = 'Hospital' AND "LOCAL" = 1)
)
但仍有 Context = Hospital 和 Local = 0 的记录
我测试的时候
("CONTEXT" <> 'Home address')
或
("CONTEXT" = 'Hospital' AND "LOCAL" = 1)
单独使用,它可以工作,我无法将两者结合起来提供我需要的东西。
我看过这个
第一。
我想你真的想要:
WHERE Date >= '2017-04-04' AND -- time component is unnecessary
CONFIDENCE <> 'Discarded' AND
CONTEXT <> 'Home' AND
(NOT (CONTEXT = 'Hospital' AND LOCAL = 1) )
当CONTEXT = 'Hospital'
时,则不等于'Home'
。所以,它仍然符合 CONTEXT
.
我觉得条件应该是这样的:
...
AND
(
("CONTEXT" <> 'Home address' AND "CONTEXT" <> 'Hospital')
OR ("CONTEXT" = 'Hospital' AND "LOCAL" = 1)
)
当您使用 ("CONTEXT" <> 'Home address') OR ("CONTEXT" = 'Hospital' AND "LOCAL" = 1)
时,由于第一个条件 "CONTEXT" <> 'Home address'
But there are still records with Context = Hospital and Local = 0
是正确的
(CONTEXT NOT IN('Hospital' , 'Home') OR (CONTEXT = 'Hospital' AND LOCAL= 1))
WHERE Date >= '2017-04-04' AND -- time component is unnecessary
CONFIDENCE <> 'Discarded' AND
CONTEXT <> 'Home' AND NOT(CONTEXT = 'Hospital' AND LOCAL = 0)
有效
和
一样 WHERE Date >= '2017-04-04' AND -- time component is unnecessary
CONFIDENCE <> 'Discarded'
AND
(
("CONTEXT" <> 'Home address' AND "CONTEXT" <> 'Hospital')
OR ("CONTEXT" = 'Hospital' AND "LOCAL" = 1)
)