2016-09-23 120 views
0

筛选结果我运行一个查询,其中的结果是这个样子:跨越多个列

  JOHN JILL GARY JANE JEFF MICK 
RED  | NOPE | OK | OK | OK | OK | OK | 
ORANGE | OK | OK | OK | OK | OK | OK | 
YELLOW | OK | OK | NOPE | OK | NOPE | OK | 
GREEN | OK | OK | OK | OK | OK | OK | 
BLUE | OK | OK | OK | OK | OK | OK | 
INDIGO | OK | NOPE | OK | OK | OK | OK | 
VIOLET | OK | OK | OK | OK | OK | NOPE | 

我想筛选出所有列都是OK的记录。我只希望看到一个或多个列包含NOPE结果的结果。

我已经尝试了很多不同的变化,在这个<>这个或那个=这个,我放弃了,我需要帮助。

+0

不明确的问题,你想达到什么?我错过了什么吗? –

+0

我正在寻找一种方法来过滤结果,所以橙色,绿色和蓝色都被省略了,因为所有列都正常。我只想看看存在1个或更多NOPE的记录。 – bteague

回答

1

假定列的数目是恒定的,然后在where子句中寻找哪里都可以,而不是翻转应该这样做。

WHERE (NOT ((JOHN = 'OK') AND (JILL = 'OK') AND (GARY = 'OK') AND (JANE = 'OK') AND (JEFF= 'OK') AND (MICK = 'OK'))) 
+0

我更喜欢这个答案,只是因为它会是普遍有用的。我提供的答案对这种情况非常具体。我喜欢。谢谢,大卫。 – bteague

0

也许WHERE子句,看起来像这样:

WHERE JOHN = 'NOPE' 
    OR JILL = 'NOPE' 
    OR GARY = 'NOPE' 
    OR JANE = 'NOPE' 
    OR JEFF = 'NOPE' 
    OR MICK = 'NOPE' 
+0

谢谢你的尝试。据我所知,如果查询结果像'NOPE'或'OK'一样简单,这可能会起作用。事实上,'NOPE'可以是几十种事物中的一种。而且,这些数十件事情将不断发展,尽管在技术上可行,但以这种方式构建查询是不可行的。 – bteague

+0

@bteague如果你有多个东西使用WHERE ColumnName IN('value1','value2')或INNER JOIN它到一个临时变量表​​。 – scsimon

2

WHERE JOHN + JILL + GARY +简+ JEFF + MICK <> 'okokokokokok'