我很好奇,想知道這實際上是可能的...MySQL的:更新左加入視圖,其中右表中沒有匹配的數據
在這個簡單的例子,我有:
Table_A: Table_B:
+------+--------+ +------+--------+
| id | data_1 | | id | data_2 |
+------+--------+ +------+--------+
| 1 | Hello | | 1 | There |
+------+--------+ +------+--------+
| 2 | Hi |
+------+--------+
一個MySQL查看(CREATE VIEW...
)稱爲tables
是:
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 tables
將返回:
+------+--------+--------+
| id | data_1 | data_2 |
+------+--------+--------+
| 1 | Hello | There |
+------+--------+--------+
| 2 | Hi | NULL |
+------+--------+--------+
對現有數據的更新沒有問題。 。即,UPDATE tables SET data_2='World' WHERE id=1
完成和ID 1的結果將是:
+------+--------+--------+
| id | data_1 | data_2 |
+------+--------+--------+
| 1 | Hello | World |
+------+--------+--------+
但是關於使用右側表(table_b
)的UPDATE
聲明,如果它不具有任何數據相匹配的ID是什麼?使用與前面相同的示例,UPDATE tables SET data_2='John' WHERE id=2
將導致0行匹配(因此tables
仍將在data_2
字段中返回NULL
而不是John
)。
+------+--------+--------+
| id | data_1 | data_2 |
+------+--------+--------+
| 2 | Hi | NULL |
+------+--------+--------+
有沒有一種方法,使在tables
鑑於這一工作,而無需直接觸摸table_b
?