MySQL查询优化 - 单个查询限制

时间:2012-01-29 01:21:08

标签: mysql sql

由于我的访问受限,我一次只能运行一个查询。通常,我必须运行类似于下面几个ID的查询。它一个接一个地变成了一个非常耗时的任务。

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

理想情况下,我想在{id1,id2,...}中使用id之类的内容,但ID的两个实例必须相同。

我正在尝试修改查询,以便它可以在单个查询中处理ID的数量。

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

解决方案(实际上非​​常简单):

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

2 个答案:

答案 0 :(得分: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',...)

<强>更新

for 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

答案 1 :(得分:0)

试试贝尔沃。请做必要的更改,因为我已经解释了要做的事情

 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>