2012-01-29 42 views
0

通過我的受限訪問,我一次只能運行一個查詢。很多時候我必須運行一個類似於下面幾個ID的查詢。一個接一個,它變成一個非常耗時的任務。MySQL查詢優化 - 單個查詢限制

UPDATE table1 
SET columnA = X, 
     columnB = (SELECT max(columnC) FROM table2 WHERE id = <ID>) 
WHERE id = <ID> 

理想我想使用類似的ID在{ID1,ID2,...},但是ID的兩個實例必須是相同的。

我想修改查詢,以便它可以在單個查詢中處理ID號。

============================================== ====

SOLUTION(很簡單,實際上):

UPDATE table1 
SET columnA = X, 
     columnB = (SELECT max(columnC) FROM table2 WHERE id = table1.id) 
WHERE id in (id1, id2, ...) 
+0

這兩個表中是否有任何關係? – 2012-01-29 01:32:10

+0

表1和表2有ID列。 id在兩個表中都充當主鍵。 – 2012-01-29 01:43:23

回答

0

你可能想試試這個。

的T-SQL:

UPDATE a 
SET  a.columnA = X, 
     a.columnB = max(b.columnC) 
FROM table1 a INNER JOIN table b ON a.id = b.id 
WHERE a.id IN ('ID','HERE',...) 

UPDATE

爲MySQL:

UPDATE table1 a INNER JOIN 
        (SELECT id, Max(columnC) As iMax 
        FROM table12 
        GROUP BY id) b ON a.id = b.id 
SET  a.columnA = X, 
     a.columnB = b.iMax 
WHERE a.id IN ('ID','HERE',...) 

REFERENCE

+0

我正在'使用組功能無效'。 – 2012-01-29 04:11:43

+0

@LukeG在MySQL中嘗試我更新的答案。 – 2012-01-29 04:18:07

+0

這次它返回'UPDATE和LIMIT的錯誤用法' – 2012-01-29 04:27:17

0

嘗試belwo。請做必要的更改,因爲我已經解釋了剛纔的方法

UPDATE table1 as t1 INNER 
     JOIN (
      SELECT id 
       , Max(columnC) As maxval 
      FROM table12 
      GROUP 
       BY id 
      ) As t2 ON t1.id= t2.id 
    SET columnA = t1.x 
    FROM columnB = t2.maxval 
    WHERE id = <ID>