2013-02-15 22 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