| 用途 | 组合与自关联 |
|---|---|
| CROSS JOIN | 行数 = 左×右 |
| SELF JOIN | 给同表起两个别名 |
自连接比较相邻行
自连接比较相邻行
SELECT a.id, a.value - b.value AS delta
FROM metrics a
JOIN metrics b ON b.id = a.id - 1;生成数字序列(小型 CROSS JOIN)
生成数字序列(小型 CROSS JOIN)
SELECT d1.n + d2.n*10 + 1 AS seq
FROM (SELECT 0 n UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4
UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) d1
CROSS JOIN (SELECT 0 n UNION SELECT 1 UNION SELECT 2) d2;CROSS JOIN 很容易因漏写条件产生百万行中间结果,写连接务必先确认 ON。