我有两个mysql表
表1
id email other fields
表2
id email other fields
其中table1的id是auto increment
mysql列。在表2中,id仅为primary key not NULL
。
表2的id如何出错。 现在两个表都有一些记录,我想在表2中使用与表1相同的ID。
让我们举个例子
表1
1 a@a.com
2 b@b.com
表2
1 b@b.com
2 a@a.com
如果我解雇查询
update
table2
set
id=(select id from table 1 where email="a@a.com")
where
email = "a@a.com"
我会收到错误,因为表2的id值已经为2。 现在我该如何解决这个问题?
我希望table2的id与基于电子邮件的table1相同。
答案 0 :(得分:1)
据推测,你正在做一次性修复。进入phpMyAdmin,或您最喜欢的数据库编辑工具,从table2中删除PK约束。使用这些查询修复记录,然后重新添加PK约束。
答案 1 :(得分:1)
这个怎么样:
update table2 set email=(
case
when email='b@b.com' Then 'a@a.com'
when email ='a@a.com' Then 'b@b.com'
end)
答案 2 :(得分:0)
你可以做@rickythefox告诉你的事情,或者你可以通过两个问题达到你的目标: