mysql两个表连接怎么去掉重复的列_从MySQL中具有不同列的表上的多个连接结果中删除重复项...

我不知道我是否理解你的问题,但你为什么要使用LEFT JOIN?这个故事听起来更像是INNER JOIN.这里没有任何东西需要UNION.

[编辑]

好的,我想我现在看到了你想要的东西.我从来没有尝试过我要提出的建议,而且还有一些DB不支持它(但是),但我认为你想要一个窗口函数.

WITH Y2 AS (SELECT Y.*, ROW_NUMBER() OVER (PARTITION BY A) AS YROW FROM Y),

Z2 AS (SELECT Z.*, ROW_NUMBER() OVER (PARTITION BY A) AS ZROW FROM Z)

SELECT COALESCE(Y2.A,Z2.A) AS A, Y2.C, Y2.D, Z2.E, Z2.F, Z2.G

FROM Y2 FULL OUTER JOIN Z2 ON Y2.A=Z2.A AND YROW=ZROW;

我的想法是尽可能少地打印列表,对吧?因此,如果A1在Y中有10个条目,在Z中有7个,那么我们得到10行,其中3个为Z字段具有NULL.这适用于Postgres.我不相信这种语法在MySQL中可用.

Y:

a | d | c

---+---+----

1 | 1 | -1

1 | 2 | -1

2 | 0 | -1

Z:

a | f | g | e

---+---+---+---

1 | 9 | 9 | 0

2 | 1 | 1 | 0

3 | 0 | 1 | 0

上述声明的输出:

a | c | d | e | f | g

---+----+---+---+---+---

1 | -1 | 1 | 0 | 9 | 9

1 | -1 | 2 | | |

2 | -1 | 0 | 0 | 1 | 1

3 | | | 0 | 0 | 1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值