gpt4 book ai didi

MySQL:更新左连接 View ,其中右表没有匹配数据

转载 作者:行者123 更新时间:2023-11-29 15:09:36 24 4
gpt4 key购买 nike

我很想知道这是否真的可能......

在这个简化的示例中,我有:

Table_A:           Table_B:

+------+--------+ +------+--------+
| id | data_1 | | id | data_2 |
+------+--------+ +------+--------+
| 1 | Hello | | 1 | There |
+------+--------+ +------+--------+
| 2 | Hi |
+------+--------+

名为 tables 的 MySQL View (CREATE VIEW...)是:

SELECT table_a.id AS id, 
table_a.data_1 AS data_1,
table_b.data_2 AS data_2
FROM table_a
LEFT JOIN table_b
ON table_a.id=table_b.id

因此,一个简单的SELECT * FROM table 将返回:

+------+--------+--------+
| id | data_1 | data_2 |
+------+--------+--------+
| 1 | Hello | There |
+------+--------+--------+
| 2 | Hi | NULL |
+------+--------+--------+

更新现有数据就可以了。即,UPDATE table SET data_2='World' WHERE id=1 完成,id 1 的结果将是:

+------+--------+--------+
| id | data_1 | data_2 |
+------+--------+--------+
| 1 | Hello | World |
+------+--------+--------+

但是,如果右表 (table_b) 没有任何与 id 匹配的数据,那么如何在右表 (table_b) 上使用 UPDATE 语句呢?使用与之前相同的示例,UPDATE rows SET data_2='John' WHERE id=2 将导致 0 行匹配(因此,tables 仍将返回 NULL 而不是 data_2 字段中的 John)。

+------+--------+--------+
| id | data_1 | data_2 |
+------+--------+--------+
| 2 | Hi | NULL |
+------+--------+--------+

有没有一种方法可以在 tables View 上实现此功能,而无需直接触摸 table_b

最佳答案

这实际上是插入,而不是更新,因为 table_b 中不存在 id=2 的行。您可以使用两个单独的语句来完成此操作,一个用于执行更新(使用内部联接),另一个用于执行插入。我怀疑这是否可能在一个声明中实现。

关于MySQL:更新左连接 View ,其中右表没有匹配数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1154275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com