我想我已经看到了这个问题的一些答案,可能与我的需求差距不大,但我不太了解mysql,所以我会问我的具体情况。< / p>
我有一个包含多个表的数据库,为此我只需要将表“images”中的值复制到表“credits”,如果“image”表上的image_media_file列值与“credit_file_name”列上的值相同“学分“表。
在上面的示例中,将复制名称john和mike。剩下的不会。
我打算在phpmyadmin上使用mysql代码。
注意: 在目标表(图像表)上可能存在多个具有相同文件名的值,在这种情况下,信用表中的名称可以复制到图像表中文件名相同的所有字段
答案 0 :(得分:2)
您也可以使用更新联接
CLUSTER: Worker 2 started
Parrot started in development mode on http://localhost:3333;
press Ctrl-C to terminate
Parrot started in development mode on http://localhost:3333;
press Ctrl-C to terminate
CLUSTER: Worker 2 received request.
CLUSTER: Worker 2 received request.
对于像你评论中的“逆序”,你应该
UPDATE Images
JOIN Credits Images.image_media_file = Credit.credit_file_name
SET Images.image_restorer = Credits.credit_restorer
答案 1 :(得分:1)
以下内容对您有用:
UPDATE Images, Credits
SET Images.image_restorer = Credits.credit_restorer
WHERE Images.image_media_file = Credit.credit_file_name
如果对于不同的credit_restorer
有多个credit_file_name
,则会抛出错误,因为MySQL不知道它应该用于更新的credit_restorer
。但听起来这可能不是你的问题。
答案 2 :(得分:1)
尝试这样的事情
update Images INNER JOIN Credits ON credit_file_name=image_media_file SET
Images.image_restorer=Credits.credit_restorer
INNER JOIN:当BOTH表中至少有一个匹配时返回所有行
LEFT JOIN:返回左表中的所有行,以及右表中匹配的行
RIGHT JOIN:返回右表中的所有行,以及左表中匹配的行
FULL JOIN:当其中一个表中存在匹配时返回所有行