MySQL是否在表之间的连接期间自动使用coalesce函数?

问题描述 投票:1回答:1

在表连接期间,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操作期间的使用时间。这对我来说没有意义!有人能告诉我一个例子吗?

mysql join coalesce
1个回答
1
投票

这是指在自然连接和使用连接期间冗余列消除。描述如何从显示中排除列。

操作顺序在您引用的部分上方描述。

  • 首先,两个连接表的合并公共列按它们在第一个表中出现的顺序排列
  • 第二,第一个表所特有的列,按照它们在该表中出现的顺序排列
  • 第三,第二个表所特有的列,它们在该表中出现的顺序

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 |
© www.soinside.com 2019 - 2024. All rights reserved.