【发布时间】:2013-09-12 03:49:20
【问题描述】:
假设我有一组记录,其中一个表上有一个user_id 列,还有一个users 表,两个表都有一个email 列。如何在第一个表上执行UPDATE 以设置电子邮件地址匹配的mytable.user_id = users.id?
谢谢!
【问题讨论】:
标签: mysql sql postgresql join sql-update
假设我有一组记录,其中一个表上有一个user_id 列,还有一个users 表,两个表都有一个email 列。如何在第一个表上执行UPDATE 以设置电子邮件地址匹配的mytable.user_id = users.id?
谢谢!
【问题讨论】:
标签: mysql sql postgresql join sql-update
这是一个update 和一个join。语法因数据库而异。 MySQL 的语法是:
update SetOfRecords sor join
users u
on sor.user_id = users.id
set sor.email = u.email;
Postgres 语法不同,因为它使用了set 之后的from 子句。 ANSI 标准语法应该适用于两个数据库:
update SetOfRecords
set email = (select max(email) from users u where SetOfRecords.user_id = u.id);
【讨论】:
user_id 字段而不是电子邮件字段(我已经在记录中拥有的值),它是否有效?
UPDATE mytable SET user_id = users.id FROM users WHERE mytable.email = users.email