You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优雅联结两个独立JOIN的SQL查询结果?

IIT SQL题目求解问题

这是一道印度理工学院(IIT)的题目:
输入图片描述

我已经能写出以下两个独立查询:

  • (i) P LEFT JOIN Q ON P.A = Q.A AND P.B = Q.B
  • (ii) Q RIGHT JOIN R ON Q.A = R.A

但不知道如何把这两个查询的结果联结起来。尝试了下面的语句,结果出现歧义错误。我知道可以给列起别名,但不清楚怎么在FROM子句里给列名创建别名:

mysql> with r1 as (select * from p left join q on p.a = q.a and p.b = q.b) select * from q right join r on q.a = r.a cross join r1 on r1.a = r.e;
ERROR 1060 (42S21): Duplicate column name 'a'

有没有更优雅的方法?比如用两个WITH子句分别存储两个查询结果,再联结它们?或者有没有更简单的实现方式?


编辑补充

为避免列名歧义,我尝试给所有字段起别名,这个方法可行。同时也会尝试其他方案:

mysql> with r1 as (select p.a as pa, p.b as pb, p.c as pc, q.a as qa, q.b as qb, q.d as qd from p left join q on p.a = q.a and p.b = q.b), r2 as (select q.a as qa1, q.b as qb1, q.d as qd1, r.a as ra1, r.e as re1 from q right join r on q.a = r.a) select * from r1 cross join r2;
+------+------+------+------+------+------+------+------+------+------+------+
| pa   | pb   | pc   | qa   | qb   | qd   | qa1  | qb1  | qd1  | ra1  | re1  |
+------+------+------+------+------+------+------+------+------+------+------+
| a3   | b2   | c2   | NULL | NULL | NULL | a1   | b2   |    2 | a1   | e1   |
| a3   | b3   | c1   | NULL | NULL | NULL | a1   | b2   |    2 | a1   | e1   |
| a2   | b1   | c2   | a2   | b1   |    5 | a1   | b2   |    2 | a1   | e1   |
| a1   | b2   | c1   | a1   | b2   |    2 | a1   | b2   |    2 | a1   | e1   |
| a3   | b2   | c2   | NULL | NULL | NULL | a3   | b1   |    6 | a3   | e2   |
| a3   | b3   | c1   | NULL | NULL | NULL | a3   | b1   |    6 | a3   | e2   |
| a2   | b1   | c2   | a2   | b1   |    5 | a3   | b1   |    6 | a3   | e2   |
| a1   | b2   | c1   | a1   | b2   |    2 | a3   | b1   |    6 | a3   | e2   |
| a3   | b2   | c2   | NULL | NULL | NULL | NULL | NULL | NULL | a4   | e3   |
| a3   | b3   | c1   | NULL | NULL | NULL | NULL | NULL | NULL | a4   | e3   |
| a2   | b1   | c2   | a2   | b1   |    5 | NULL | NULL | NULL | a4   | e3   |
| a1   | b2   | c1   | a1   | b2   |    2 | NULL | NULL | NULL | a4   | e3   |
| a3   | b2   | c2   | NULL | NULL | NULL | NULL | NULL | NULL | a4   | NULL |
| a3   | b3   | c1   | NULL | NULL | NULL | NULL | NULL | NULL | a4   | NULL |
| a2   | b1   | c2   | a2   | b1   |    5 | NULL | NULL | NULL | a4   | NULL |
| a1   | b2   | c1   | a1   | b2   |    2 | NULL | NULL | NULL | a4   | NULL |
+------+------+------+------+------+------+------+------+------+------+------+

内容的提问来源于stack exchange,提问作者BaskarA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 16:05:27