这可能是一个迟钝的问题,但即使经过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
答案 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;