如何查找一行不包含另一列中的值
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.当边缘情况