多个插入在同一个表中

时间:2014-05-01 21:48:37

标签: mysql sql sql-update

这可能是一个迟钝的问题,但即使经过2个小时的搜索,我也无法找到任何好的方法来解决这个问题。

我试图在一个表中切换2行......

我打破了结构:

ID time 
 3  100
 5  200

行在实际代码中有更多列,但我只需要交换这两个值..

我尝试使用两个Update语句来实现这一点。但最终我最终得到了4个sql语句和连接:/ ..我必须更改单个sql中的每个值以使100%确定它们交换了正确的方法。但它似乎很糟糕的代码

如果我用2更新sqls交换值,第二个会失败,因为表格中没有唯一的matche ...

我用谷歌搜索了几个小时来找到一种方法来实现这一点,一个SQL和一个连接,但我失败了。

所以我正在做的那一刻:


$query = "UPDATE `" . $table . "` SET...; 
$db->insert($query);

$query2 = "UPDATE `" . $table . "` SET...;
$db->insert($query2);

... two more times

2 个答案:

答案 0 :(得分:1)

E.g。

UPDATE my_table x 
  JOIN my_table y 
    ON x.id IN(3,5)
   AND y.id IN(3,5) 
   AND x.id <> y.id 
   SET x.time = y.time;

答案 1 :(得分:0)

使用占位符ID值(在此示例中我使用的是99999)。这会将代码减少为3个简单的sql语句。

update table set ID = 99999 where id = 3;
update table set ID = 3 where ID = 5;
update table set ID = 5 where ID = 99999;