具有多个列和数据库的MySQL更新

时间:2014-07-22 11:46:51

标签: mysql

我在下面有这个脚本,应该使用来自subscriber_id subscriber_users的{​​{1}}更新id中的subscriber email来自subscriber在oldDB.table中为emailSubscriber

UPDATE subscription_users AS u
JOIN subscriber AS s
ON u.subscriber_id = s.id
set u.subscriber_id = s.id
where s.email IN (SELECT `emailSubscriber` FROM oldDB.table);

此代码运行时没有任何错误,但永远不会设置id中的subscriber。所以我猜这个子选择不起作用。

此Querys运行u.subscriber_idnull,此查询不会选择任何条目,也不会更新任何条目。但我可以保证有匹配的条目,更新应该有效。

我做错了什么?

尝试澄清事情。

我有三张桌子:

带有字段subscriberid

email 带有字段subscriber_users

subscriber_id

subscriber_users代表与subscriber的OneToMany关系。

然后另一个数据库中的table字段为emailSubscriber

id位于subscriber字段中时,我需要一种方法将subscriber_idsubscribers_users添加到subscriber.email emailSubscriber oldDatabase.table

我认为加入是误导性的,因为subscriber_users.subscriber_idnull而无法正常工作,所以加入时没有任何价值。这是我思考过程中的一个错误。

这是订阅者的结构

subscriber structure

这是subscription_users

的结构

subcription_users structure

关系如下:

1 subscriber - X subscription_users

1 个答案:

答案 0 :(得分:0)

你加入已经相等的值,但也希望重置;举个简单的例子

UPDATE `table` SET `value` = 5 WHERE `value` = 5;