在表连接期间,MySQL何时使用此功能?
使用coalesce操作定义替换两个公共列的单个结果列。也就是说,对于两个t1.a和t2.a,得到的单个连接列a被定义为a = COALESCE(t1.a,t2.a),其中:
COALESCE(x, y) = (CASE WHEN x IS NOT NULL THEN x ELSE y END)
https://dev.mysql.com/doc/refman/8.0/en/join.html
我知道函数的作用,但我想知道它在join
操作期间的使用时间。这对我来说没有意义!有人能告诉我一个例子吗?
这是指在自然连接和使用连接期间冗余列消除。描述如何从显示中排除列。
操作顺序在您引用的部分上方描述。
- 首先,两个连接表的合并公共列按它们在第一个表中出现的顺序排列
- 第二,第一个表所特有的列,按照它们在该表中出现的顺序排列
- 第三,第二个表所特有的列,它们在该表中出现的顺序
例
T1
| a | b | c |
| 1 | 1 | 1 |
Taq酶
| a | b | d |
| 1 | 1 | 1 |
使用加入
SELECT * FROM t1 JOIN t2 USING (b);
结果,t1.b
被合并(由于USING
),然后是第一个表独有的列,接着是第二个表中的列。
| b | a | c | a | d |
| 1 | 1 | 1 | 1 | 1 |
而自然的加入
SELECT * FROM t1 NATURAL JOIN t2;
结果是,t1
列(或两个表中相当常见的列)被合并,然后是第一个表的唯一列,接着是第二个表中的列。
| a | b | c | d |
| 1 | 1 | 1 | 1 |