如何查找一行不包含另一列中的值

Posted

技术标签:

【中文标题】如何查找一行不包含另一列中的值【英文标题】:How to find a row does not contain value in another column 【发布时间】:2016-10-17 15:58:32 【问题描述】:

我有一张这样的桌子:

Id    | Value1 | Value2  
1     |   x    |   2  
2     |   x    |   3  
3     |   x    |   7  
4     |   y    |   3  
5     |   z    |   1  
6     |   z    |   7  
7     |   c    |   5  
8     |   c    |   6

如何在“Value2”列中获取不包含值 7 的“Value1”

所以,结果应该是: 是的 c

谢谢。

【问题讨论】:

select val1 from yourtable where val2<>7?还是太容易了? @Drew 我相信这可能被错误地标记为重复。查看结果集。如果这是一个简单的“Where not = 7”,那么它将返回 X 和 Z,而不仅仅是 Y 和 C。OP 在这方面不是很清楚,但是 PaulF 在下面我自己的答案中指出了同样的错误。 @Santi - 谢谢我正要发表评论并标记了重新打开的问题 @MarcB:太容易了 - OP 想要消除 value1 为 x 或 z 的所有行,因为其中一些行包含 value2 = 7。所以不要简单地只选择不等于 7 的行 @Santi 这是一个不利于本网站的问题的经典案例。因此,我们将其移向删除 【参考方案1】:

已编辑

正如 PaulF 在下面的 cmets 中指出的,我可能误解了您的问题。尝试这样的事情...

SELECT DISTINCT Value1 
FROM MyTable a
WHERE NOT EXISTS (SELECT Value1 FROM MyTable b WHERE b.Value1 = a.Value1 AND b.Value2 = 7)

【讨论】:

您的查询不会返回 x、y、z 和 c - OP 想要消除 x 和 z,因为它们的值包含 7 @PaulF 哦,伙计,你可能是对的!我误解了我想的问题。我会编辑。 @PaulF 也许这样更好! 再次击败我 - 我在子查询中也有 DISTINCT,在示例数据中不需要 - 但也许会提高大表的效率 由于您不知道架构,这可能是对 NOT IN 的危险使用,因此应该避免

以上是关于如何查找一行不包含另一列中的值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 python 的另一列中的字符串值中从数据框中的一列中搜索字符串?

如何根据 PySpark 数据框的另一列中的值修改列? F.当边缘情况

如何根据Python中另一列中的日期查找最频繁的值

如果同一行中另一列中的值匹配,如何比较列的两个值

如何计算包含一组列中的值和 Pandas 数据框中另一列中的另一个值的行数?

根据另一列中的值更新 BigQuery 中的嵌套数组