使用不同的 table 更新 table
Updating a table using a different table
这可能非常简单,但由于我是一个 SQL 新手,我不想弄错并破坏我们的数据库。
我正在考虑根据另一个 table 中的内容更新 table。在一个 table 中,我们有一个用户列表,他们所在的表格和他们的导师。当在前端更新表单时,它不会将导师更改为与该表单相关的导师。例如,我们将表格更改为新表格,下面的导师现在应该分别读汤姆、迪克和哈利:
Table 1
user | form | tutor
---------------------------------
a | 10Tom | Bill
b | 11Dick | Paul
c | 9Harry | Dave
我们还有另一个 table 将相应的表格链接到正确的导师:
Table 2
form | tutor
-----------------------
10Tom | Tom
11Dick | Dick
9Harry | Harry
我认为代码应该是这样的,但我不知道 JOIN 在这种情况下是否有效:
UPDATE Table1
LEFT OUTER JOIN Table2
ON Table1.Form = Table2.Form
SET Table1.Tutor = Table2.Tutor
WHERE Table1.Form = Table2.Form
谁能告诉我这是否可行?我已经备份了数据库,所以希望如果我确实破坏了某些东西,我可以恢复它。
谢谢
罗布
这应该有效。我假设需求需要左外连接。
UPDATE Table1
SET Table1.Tutor = Table2.Tutor
from Table2
where Table1.Form = Table2.Form;
您没有指定您正在使用的后端,但该语法看起来不正确。而是这样做:
UPDATE Table1
SET Table1.Tutor = Table2.Tutor
from table2
WHERE Table1.Form = Table2.Form;
Update Table1
SET tutor = t2.tutor
From Table1 t1
JOIN Table2 t2
on t1.form = t2.form
在MySQL中,可以表示为:
UPDATE Table1 t1 JOIN
Table2 t2
ON t1.Form = t2.Form
SET t1.Tutor = t2.Tutor;
在 SQL Server 或 Postgres 中,您可以:
UPDATE Table1 t1 JOIN
SET t1.Tutor = t2.Tutor
FROM Table2 t2
WHERE t1.Form = t2.Form;
在任何数据库中,您应该能够做到:
UPDATE Table1 JOIN
SET Tutor = (SELECT t2.Tutor
FROM Table2 t2
WHERE table1.Form = t2.Form
)
WHERE EXISTS (SELECT 1
FROM Table2 t2
WHERE table1.Form = t2.Form
);
这可能非常简单,但由于我是一个 SQL 新手,我不想弄错并破坏我们的数据库。
我正在考虑根据另一个 table 中的内容更新 table。在一个 table 中,我们有一个用户列表,他们所在的表格和他们的导师。当在前端更新表单时,它不会将导师更改为与该表单相关的导师。例如,我们将表格更改为新表格,下面的导师现在应该分别读汤姆、迪克和哈利:
Table 1
user | form | tutor
---------------------------------
a | 10Tom | Bill
b | 11Dick | Paul
c | 9Harry | Dave
我们还有另一个 table 将相应的表格链接到正确的导师:
Table 2
form | tutor
-----------------------
10Tom | Tom
11Dick | Dick
9Harry | Harry
我认为代码应该是这样的,但我不知道 JOIN 在这种情况下是否有效:
UPDATE Table1
LEFT OUTER JOIN Table2
ON Table1.Form = Table2.Form
SET Table1.Tutor = Table2.Tutor
WHERE Table1.Form = Table2.Form
谁能告诉我这是否可行?我已经备份了数据库,所以希望如果我确实破坏了某些东西,我可以恢复它。
谢谢 罗布
这应该有效。我假设需求需要左外连接。
UPDATE Table1
SET Table1.Tutor = Table2.Tutor
from Table2
where Table1.Form = Table2.Form;
您没有指定您正在使用的后端,但该语法看起来不正确。而是这样做:
UPDATE Table1
SET Table1.Tutor = Table2.Tutor
from table2
WHERE Table1.Form = Table2.Form;
Update Table1
SET tutor = t2.tutor
From Table1 t1
JOIN Table2 t2
on t1.form = t2.form
在MySQL中,可以表示为:
UPDATE Table1 t1 JOIN
Table2 t2
ON t1.Form = t2.Form
SET t1.Tutor = t2.Tutor;
在 SQL Server 或 Postgres 中,您可以:
UPDATE Table1 t1 JOIN
SET t1.Tutor = t2.Tutor
FROM Table2 t2
WHERE t1.Form = t2.Form;
在任何数据库中,您应该能够做到:
UPDATE Table1 JOIN
SET Tutor = (SELECT t2.Tutor
FROM Table2 t2
WHERE table1.Form = t2.Form
)
WHERE EXISTS (SELECT 1
FROM Table2 t2
WHERE table1.Form = t2.Form
);