我已经阅读了有关该主题的至少10个SO问题,但无法弄清楚。我在Jupyter工作,但我认为这没有什么不同。
我有两个表:
Table A Table B
+-----+-----+ +-----+-----+
| x | y | | x | y |
+-----+-----+ +-----+-----+
| 1 | 2 | | 1 | 3 |
| 2 | 3 | | 4 | 6 |
| 3 | 4 | | 7 | 9 |
| 4 | 5 | | 10 | 12 |
| 5 | 6 | +-----+-----+
+-----+-----+
我可以使用以下查询合并这些表:
SELECT * FROM (
SELECT * FROM A UNION SELECT * FROM B
)
但是,我不确定如何x
从该联合返回具有重复列的四行。我试过了GROUP BY x HAVING COUNT(*) > 1
,但这只返回2行。输出应为:
+-----+-----+
| x | y |
+-----+-----+
| 1 | 2 |
| 1 | 3 |
| 4 | 5 |
| 4 | 6 |
+-----+-----+
您似乎想要:
select a.*
from a
where exists (select 1 from b where b.x = a.x)
union all
select b.*
from b
where exists (select 1 from a where a.x = b.x);
union
删除重复项会产生开销。在您的情况下,这似乎是不必要的。因此,如果您不需要重复删除,请使用union all
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句