2013-02-15 46 views
0

我找不出如何使用单个查询进行多个更新。与MySQL中的表比较的多个更新

这是我的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 

我怎么会弥补的DeviceID在temporary_table?我需要什么样的查询?

回答

2

您需要使用update语句:

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

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; 
+0

这不是有效的MySQL语法。 – GarethD 2013-02-15 09:00:45