将字段从T1字段A复制到T2字段A其中(如果或当)T1字段B = T2字段B(mysql)

时间:2016-03-04 19:14:56

标签: mysql

我想我已经看到了这个问题的一些答案,可能与我的需求差距不大,但我不太了解mysql,所以我会问我的具体情况。< / p>

我有一个包含多个表的数据库,为此我只需要将表“images”中的值复制到表“credits”,如果“image”表上的image_media_file列值与“credit_file_name”列上的值相同“学分“表。

Example

在上面的示例中,将复制名称john和mike。剩下的不会。

我打算在phpmyadmin上使用mysql代码。

注意: 在目标表(图像表)上可能存在多个具有相同文件名的值,在这种情况下,信用表中的名称可以复制到图像表中文件名相同的所有字段

3 个答案:

答案 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:当其中一个表中存在匹配时返回所有行