如何使用单个查询更新两行的交换值

San*_*kha 15 mysql swap

是否有一个查询,我可以用单个查询交换两行的值?

Hai*_*vgi 25

你可以在本文中看到解决方案

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
;
Run Code Online (Sandbox Code Playgroud)

  • 它似乎也不适用于独特的列. (2认同)

小智 10

UPDATE my_table SET a=@tmp:=a, a=b, b=@tmp;
Run Code Online (Sandbox Code Playgroud)