MySQL中的表比较的多个更新

时间:2013-02-15 08:45:03

标签: mysql sql

我无法弄清楚如何使用一个查询进行多次更新。

这是我的2张桌子。

devices_table

DeviceID  Brand     SerialNumber
---------------------------------
1         Nintendo  324234324
2         Nintendo  89978333
3         Sony      Z3432343
4         Sony      Z3424335

temporary_table

DeviceID  Brand     SerialNumber
---------------------------------
NULL      Nintendo  324234324
NULL      Nintendo  89978333
NULL      Sony      Z3432343
NULL      Sony      Z3424335

我将如何填写temporary_table中的DeviceID?我需要什么样的查询?

2 个答案:

答案 0 :(得分:2)

您需要使用更新声明:

UPDATE  temporary_table
SET     DeviceID = (    SELECT  Devices_table.DeviceID
                        FROM    Devices_table
                        WHERE   Devices_table.Brand = temporary_table.Brand
                        AND     Devices_table.SerialNumber = temporary_table.SerialNumber
                    );

<强> Example on SQL Fiddle

或者您可以使用连接而不是相关的子查询:

UPDATE  temporary_table
        INNER JOIN Devices_table
            ON Devices_table.Brand = temporary_table.Brand
            AND Devices_table.SerialNumber = temporary_table.SerialNumber
SET     temporary_table.DeviceID = Devices_table.DeviceID;

<强> Example on SQL Fiddle

答案 1 :(得分:0)

是的,您可以使用以下查询:

UPDATE  temporary_table
SET     DeviceID = Devices_table.DeviceID
FROM    temporary_table
INNER JOIN Devices_table
ON Devices_table.Brand = temporary_table.Brand
AND Devices_table.SerialNumber = temporary_table.SerialNumber;