【问题标题】:SQL - AND OR combinationSQL - AND OR 组合
【发布时间】:2018-06-03 00:12:43
【问题描述】:

这个查询有效

SELECT *
FROM ALL
WHERE Date >= '2017-04-04 00:00:00'
AND
CONFIDENCE <> 'Discarded'
AND 
CONTEXT <>'Home'

我想说: 还有(CONTEXT &lt;&gt; 'Home') OR (CONTEXT = 'Hospital' AND LOCAL = 1)

这样我就可以选择所有记录 从 2017 年 4 月起,未丢弃,上下文不等于 home 的情况

从 2017 年 4 月起,未丢弃,或上下文 = 医院和本地 = 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)

单独,它有效,我无法将两者结合起来给我需要的东西。

我看过这个 SQL AND OR query

首先。

【问题讨论】:

  • 用于记录,其中 CONTEXT = 'Hospital' 您检查的第一个参数 ("CONTEXT" 'Home address') 返回 true,因此第二个或部分写入的内容无关紧要。更多困惑请查看sql真值表:i.stack.imgur.com/yRBgu.png

标签: sql arcgis


【解决方案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 的条件。

【讨论】:

  • 如果在第 4 个条件下你说 CONTEXT = 'Hospital',那么没有第 3 个条件。
  • 好的。我尝试使用 'CONTEXT 'Home' AND (CONTEXT = 'Hospital' AND LOCAL = 1)。发生的情况是返回具有 Context = hospital 和 local =1 的一行。我首先要说的是:返回所有 home 上下文。这是 400 行。然后在此范围内,排除上下文 = 医院和本地 = 1 的那些行(6 行)。这会让我(数脚趾)留下 394 行。怎么做?
  • 这应该有效:CONTEXT 'Home' AND NOT(CONTEXT = 'Hospital' AND LOCAL = 1) Gordon 几乎是对的。
  • 这似乎可行,但是对于我想要的 local = 0。我将其更改为那个,它似乎给了我想要的。
【解决方案2】:

我认为条件应该是这样的:

...
AND 
(
   ("CONTEXT" <> 'Home address' AND "CONTEXT" <> 'Hospital') 
   OR ("CONTEXT" = 'Hospital' AND "LOCAL" = 1)
)

当您使用("CONTEXT" &lt;&gt; 'Home address') OR ("CONTEXT" = 'Hospital' AND "LOCAL" = 1) 时,您得到But there are still records with Context = Hospital and Local = 0 的结果是正确的,因为第一个条件"CONTEXT" &lt;&gt; 'Home address'

【讨论】:

  • 这立即奏效了。谢谢。我会相应地编辑问题。
【解决方案3】:
(CONTEXT NOT IN('Hospital' , 'Home') OR (CONTEXT = 'Hospital' AND LOCAL= 1))

【讨论】:

    【解决方案4】:
    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)
        ) 
    

    【讨论】:

    • 谢谢大家。
    猜你喜欢
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 2022-01-08
    • 2011-11-05
    • 2018-08-10
    • 1970-01-01
    相关资源
    最近更新 更多