我需要使用 DatabaseB.ClientTableB
更新 DatabaseA.ClientTableA
中的几行,因为到目前为止我已经尝试过这两个 ID
UPDATE DatabaseA.ClientTableA
SET DatabaseA.ClientTableA.Field = (SELECT DatabaseB.ClientTableB.Field
FROM DatabaseB.ClientTableB
WHERE DatabaseB.ClientTableB.ID = 11)
WHERE DatabaseA.ClientTableA.ID = 22
但是它不起作用,并且 phpMyAdmin 不愿意告诉我原因。自从我使用数据库以来已经有一段时间了,我一直在这里搜索,但只找到有关如何更新具有公共(public)字段的表(使用联接)的答案
提前致谢!
编辑 1
这是表格
| 数据库A |
| ClientTableA |
________________
| id |
| firstname |
| Lastname |
| company |
| adress1 |
| adress2 |
| state |
| city |
| postcode |
| country |
| phone |
| email |
<强>|数据库B |
| ClientTableB | | emailTable |
________________ _________________
| id | | id |
| firstname | | email |
| Lastname | | pass |
| company |
| adress1 |
| adress2 |
| state |
| city |
| postcode |
| country |
| phone |
注意:我从 DatabaseB 中选择电子邮件,通过 id 连接 ClientTableB 和 emailTable
注2:在DatabaseA.ClientTableA中,除了id之外,所有字段都是空的
最佳答案
首先清除 ClientTableA,然后执行以下操作:
insert into ClientTableA
(id, firstname, Lastname, company,
adress1, adress2, state, city,
postcode, country, phone, email)
select b.id, firstname, Lastname, company,
adress1, adress2, state, city,
postcode, country, phone, email
from ClientTableB b
join emailTable e using (id)
或者,如果您必须“更新”以匹配“id”,请执行以下操作:
update ClientTableA a, ClientTableB b, emailTable e
set a.first_name = b.first_name,
a.Lastname = b.Lastname, ....
a.email = e.email
where a.id = b.id and b.id = e.id
关于mysql - 使用不同数据库且没有公共(public)字段的 MySQL 更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37281557/