Оптимизация запросов MySQL - ограничение одного запроса - PullRequest
0 голосов
/ 29 января 2012

С моим ограниченным доступом я могу одновременно выполнять только один запрос.Довольно часто мне приходится выполнять запрос, подобный приведенному ниже, для десятков идентификаторов.Один за другим это становится довольно трудоемкой задачей.

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

В идеале я хотел бы использовать что-то вроде id в {id1, id2, ...}, однако оба экземпляра ID должны бытьто же самое.

Я пытаюсь изменить запрос, чтобы он мог обрабатывать номер идентификатора в одном запросе.

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

РЕШЕНИЕ (на самом деле довольно просто):

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

Ответы [ 2 ]

0 голосов
/ 29 января 2012

Попробуйте 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>
0 голосов
/ 29 января 2012

Вы можете попробовать это.

для 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',...)

ССЫЛКА

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...