как обновить значения подкачки двух строк одним запросом - PullRequest
15 голосов
/ 23 декабря 2010

Есть ли запрос, с помощью которого я могу обмениваться значениями двух строк одним запросом?

Ответы [ 2 ]

25 голосов
/ 23 декабря 2010

решение вы можете увидеть в этой статье

http://www.microshell.com/database/sql/swap-values-in-2-rows-sql/

посмотрите на: Элегантный способ , создайте объединение, чтобы получить данные из 2 строк, которые нужно поменять местами в 1 строку, после этого сделать обновление легко.

пример:

UPDATE
rules AS rule1
JOIN rules AS rule2 ON
( rule1.rule_id = 1 AND rule2.rule_id = 4 )
SET
rule1.priority = rule2.priority,
rule2.priority = rule1.priority
;
10 голосов
/ 09 апреля 2012
UPDATE my_table SET a=@tmp:=a, a=b, b=@tmp;
...