Skip to content

集合

https://www.yuque.com/qinsjs/do88wm/ypgrouyo3e7o1ce4

LeanUser1 张三 王五 LeanUser2 李四 王五

UNION / 并集

sql
SELECT id,name FROM LeanUser1
UNION
SELECT id,name FROM LeanUser2;

两个表的数据都会出现

INTERSECT / 交集

sql
SELECT id,name FROM LeanUser1
INTERSECT
SELECT id,name FROM LeanUser2;

都有的数据才会出现

EXCEPT / 差值

sql
SELECT id,name FROM LeanUser1
EXCEPT
SELECT id,name FROM LeanUser2;

LeanUser1 有 张三、王五 LeanUser2 有 李四、王五

LeanUser1 - LeanUser2 = 张三

差集将去除与对方相同的数据。

联结

别名不是必须,但是一个好习惯。

ON 为 联结键

INNER JOIN / 内联结

sql
select g.id,g.brand,g.model,info.storage,info.power,info.architecture
from GPU as g
 INNER JOIN GPUInfo as info
  ON g.id = info.gpu_id;

内联结只会输出 满足条件 的结果。

比如 g 有,而 info 没有,就不会出现在 result 中。

OUTER JOIN / 外联结

sql
select g.id,g.brand,g.model,
       info.storage,info.power,info.architecture
from GPU as g
 LEFT OUTER JOIN GPUInfo as info
  ON g.id = info.gpu_id;

外联结需要指定 LEFT 或 RIGHT,为指定的表进行扩张。

CROSS JOIN / 交叉联结

sql
select g.id,g.brand,g.model,
       info.storage,info.power,info.architecture
from GPU as g
 CROSS JOIN GPUInfo as info;

没有 ON !

结果非常多