【问题标题】:Getting Duplicates from two columns in different tables从不同表中的两列获取重复项
【发布时间】:2019-04-26 15:43:22
【问题描述】:

我整天都在看这个。我正在尝试从两个单独的表中的两列返回重复项列表。

在 MYSQL 中,获得完整外连接的唯一方法似乎是使用 UNION,我已经尝试过:

select mobile from firstTable
group by mobile
having count(mobile) > 1
union all
select mobile from secondTable
group by mobile
having count(mobile) > 1;

但是,这会在同一个表中得到重复项,并且不考虑跨表重复项。我也尝试过连接,但是我不知道如何检查不同列中的重复项?

我的意图是获得重复项,就好像两列都在 1 和我计算具有多个条目的列一样。任何帮助表示赞赏,干杯。

【问题讨论】:

  • 你的意思是你想要重复值存在多个一次,不管它们是否只在一个表中 - 或者你想要两个表上都存在重复值。例如在 t1 和 t2 中一次?
  • 向我们展示一些示例表数据和预期结果 - 都是格式化文本,而不是图像。 stackoverflow.com/help/mcve
  • 我的意思是,如果将两列视为一个单独的列,则存在不止一次。 @jarlh

标签: mysql sql


【解决方案1】:

我建议先合并,然后聚合合并的结果:

SELECT mobile
FROM
(
    SELECT mobile FROM firstTable
    UNION ALL
    SELECT mobile FROM secondTable
) t
GROUP BY mobile
HAVING COUNT(mobile) > 1;

注意:如果在两个表中的每一个中,给定的 mobile 值可能出现多次,则使用 SELECT DISTINCT mobile FROM some_table 首先删除重复项。

【讨论】:

  • 我曾尝试过这种方法,但我忘记命名内部选择的结果(在本例中为“t”),并假设它产生了错误,因为联合在内部不起作用一个选择。所以这是要记住的事情!
【解决方案2】:

我是初学者,这个答案也可以帮助其他初学者找到重复项 我会尝试创建一个包含两列的视图以避免任何混淆

CREATE VIEW newTable as (SELECT T1.columnA, T2.columnB from table1 join table2 on T1.id=T2.id)

然后从这个新表中进行选择

SELECT columnA, columnB, COUNT(*) FROM newTable GROUP BY A, B HAVING COUNT(*) > 1

输出应该是在 A 列和 B 列中重复的行,而不是在每个单独的列中,如下例所示:

T1(我在店里有的水瓶)和T2(已经买过的水瓶)并说我想知道我有多少个同品牌的水瓶,这个品牌被这个品牌购买了多少次特别是visa卡... 这就是我理解你想要做的 该表的输出应为

【讨论】:

    猜你喜欢
    • 2013-01-30
    • 2017-11-25
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 2019-10-03
    相关资源
    最近更新 更多