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

选择可能在不同列中具有重复值的行

胡璞瑜
2023-03-14

我有一个业务表,每个业务最多可以有3个电话号码。我想查找任何重复的电话号码,但由于电话号码在不同的列中,我认为无法使经典的分组依据查询工作。

示例数据:

在本例中,我希望将记录1、2和3标识为相同。简单地将电话号码555-551-5555标识为一个重复的号码就可以了,因为我可以做一个子查询,或者呼叫程序可以使用该电话号码并发送一个新的查询,获得3个电话列中任何一个列中的所有记录555-551-5555。

如果重要的话,这是在MariaDB上。

编辑,(添加我当前的flaying尝试,因为有人似乎真的想要它):

我现在有的是:

SELECT ID, phone_main, phone_mobile, phone_tollfree
(
    SELECT COUNT(*) FROM businesses b
    WHERE (
        phone IS NOT NULL AND (b.phone_mobile=phone OR b.tollfree=phone )
    )

    OR (
        phone_mobile IS NOT NULL AND (b.phone=phone_mobile OR b.phone_tollfree=phone_mobile)
    )

    OR (
        phone_tollfree IS NOT NULL AND (b.phone=phone_tollfree OR b.phone_mobile=phone_tollfree)
    ) 
) cnt


from business HAVING cnt > 1

这方面的问题:

  1. 它似乎返回了表中的每一行。
  2. 在单个列中找不到重复项。

共有1个答案

陶博涉
2023-03-14

例如:

SELECT DISTINCT x.* 
  FROM my_table x 
  JOIN my_table y 
    ON y.id <> x.id 
   AND 
     ( y.phone_main     IN(x.phone_main,x.phone_mobile,x.phone_tollfree) 
    OR y.phone_mobile   IN(x.phone_main,x.phone_mobile,x.phone_tollfree) 
    OR y.phone_tollfree IN(x.phone_main,x.phone_mobile,x.phone_tollfree) 
     );
 类似资料:
  • 问题内容: 该主题的解决方案使我不知所措。 我有一个看起来像的表格(除与我的问题无关的其他字段之外): 名称,卡号,会员类型 现在,我想要一个显示卡号和成员类型相同的行的视图。这两个字段都是整数。名称为VARCHAR。名称不是唯一的,并且相同的名称也应显示重复的卡号,会员类型。 即,如果下表是表格: 我想要: 只需按卡号排序即可使其对人类有用。 最有效的方法是什么? 问题答案: 由于您提到的名称可

  • 我有一个表格结构 如何使用条件?我尝试使用这个,但结果是

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

  • 问题内容: 在SQL中,将行复制到另一个(备份)表中。如果备份表具有不同的结构(或不同的列名称),这可能吗?如果没有,实现此目标的最佳方法是什么? 这是我想做的:具有columns 。我想将一些行从该表复制到另一个具有column的表。内容进入,对等 问题答案: 该 列名 不事可言,只要该 数据类型 相匹配。 如果列的数据类型不匹配,请尝试相应地强制转换值。 只需尝试 使用小的虚拟表。确保明确列出

  • 问题内容: 我的表是: 我想列出一组具有相同疾病的患者。pid和did分别是患者和疾病表中的主键,并且是has_disease表中的外键。 样本数据: 耐心 疾病 has_disease 以上数据的答案是因为它们具有完全相同的疾病1和3,即疟疾和病毒热。我想知道如何在mysql中实现这一点。 。 问题答案: 该查询返回给我们患者及其疾病。 通过完整的剂量列表比较2组患者,并将pid保留为相同的剂量

  • 我想要,我的光标移动到下一个具有不同内容的单元格,我想要光标跳过所有已经存在值的单元格。 例如,我们有列:啤酒,汽车,汽车,房子,啤酒,树(KEY_AREA) 光标应选择:Beer、Car、House、Tree和skip 1 Car和1 Beer。