当前位置: 首页 > 知识库问答 >
问题:

仅选择具有匹配列表列值[重复]的一行

隗锐进
2023-03-14

我有一个表格结构

colA | colB
--------------
1    | A
1    | B
1    | C
2    | X
2    | B
2    | C
3    | Y
3    | B
3    | X

如何使用条件获得cola return=2,其中colB是X,B,c?我尝试使用这个select colA FROM table WHERE colB IN('x','b','c'),但结果是1,1,2,2,2,3,3

共有1个答案

宁鹏程
2023-03-14

考虑使用聚合:

select a
from mytable 
group by a
having
    sum(b = 'B') >= 1
    and sum(b = 'C') >= 1
    and sum(b = 'X') >= 1

这将给出至少每存在一条记录的a列值,其中b列的值为“b”,一条为“C”,一条为“X”。

您可以对此进行更严格的限制,比方说,如果您不希望b中有除'a'、'b'、'x'以外的其他可能值:

select a
from mytable 
group by a
having
    sum(b = 'B') = 1
    and sum(b = 'C') = 1
    and sum(b = 'X') = 1
    and count(*) = 3
 类似资料:
  • 问题内容: 想要改善这篇文章吗? 提供此问题的详细答案,包括引文和为什么答案正确的解释。答案不够详细的答案可能会被编辑或删除。 这个问题已经在这里有了答案 : 检索每个组中的最后一个记录-MySQL (27个答案) 去年关闭。 我有此表用于文档(此处为简化版): 如何为每个ID选择一行,而仅选择最大转速? 根据上述数据,结果应包含两行:和。我正在使用 MySQL 。 目前,我在循环中使用检查来检测

  • 问题内容: 我有表,其中有一列可能在突发中具有相同的值。像这样: 现在,我要修剪重复值的行,并仅选择第一个出现的行。 对于上表,结果应为: 如何在SQL中执行此操作? 请注意,仅应删除突发行,并且可以在非突发行中重复值! &在样本结果中重复。 编辑: 我用这个实现了它: 但这仅在ID为顺序的时才有效。id(已删除的ID)之间有间隔,查询中断。我怎样才能解决这个问题? 问题答案: 您可以使用半联接来

  • 问题内容: 假设我们在Django中有一个定义如下的模型: 名称字段不是唯一的,因此可以具有重复的值。我需要完成以下任务:从模型中选择具有至少一个name字段重复值的所有行。 我知道如何使用普通的SQL来做到这一点(可能不是最好的解决方案): 因此,可以使用django ORM选择它吗?还是更好的SQL解决方案? 问题答案: 尝试: 这与使用Django所获得的效果非常接近。问题在于这将返回一个w

  • 我有一个,如下所示: 我试图创建一个新的数据帧的基础上过滤前一个数据帧的行匹配的值列表。我已经尝试了下一段代码: 但是我犯了一个错误。我期待着下一个结果: 我正在寻找一种灵活的解决方案,它允许根据匹配列表中比示例中所示元素更多的元素进行筛选。

  • 我有下表(TBL_视频),在“TIMESTAMP”中有重复的列条目,我只想在“CAMERA”编号匹配时删除它们。 之前: 之后: 我已尝试此语句,但列不会相应删除。我非常感谢为生成正确的SQL语句所提供的所有帮助。提前谢谢!

  • 我有一个业务表,每个业务最多可以有3个电话号码。我想查找任何重复的电话号码,但由于电话号码在不同的列中,我认为无法使经典的查询工作。 示例数据: 在本例中,我希望将记录1、2和3标识为相同。简单地将电话号码555-551-5555标识为一个重复的号码就可以了,因为我可以做一个子查询,或者呼叫程序可以使用该电话号码并发送一个新的查询,获得3个电话列中任何一个列中的所有记录555-551-5555。