从不同表中的两列获取重复项

时间:2019-04-26 07:02:53

标签: mysql sql

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

在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和我都在计算具有多个条目的列一样。感谢您的帮助,欢呼。

2 个答案:

答案 0 :(得分:7)

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

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首先删除重复项。

答案 1 :(得分:1)

我是一个初学者,这个答案可能也会对其他初学者有所帮助 我会尝试创建一个包含两个列的视图,以避免任何混乱

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(已购买的水壶),说我想查找同一个品牌的我有多少个水壶,以及这个品牌购买了多少次该品牌签证卡特别是... 这就是我的理解,您正在尝试做 该表应输出 picture