我有一个sql表如下:
id position
----------------
1 1
2 2
现在我要交换id的位置,这意味着我需要o / p如下:
id position
----------------
1 2
2 1
所以我尝试了这个:
$update1 = "UPDATE table SET pos=(pos-1) WHERE pos = 2;
$conn->query($update1);
但现在的问题是该表有两个具有相同值的位置,那么如何在上面显示的结果中相互更新?
答案 0 :(得分:2)
UPDATE example_table
SET position = CASE id
WHEN 1 THEN 2
WHEN 2 THEN 1
END
WHERE id BETWEEN 1 AND 2
答案 1 :(得分:1)
如果你真的拥有两行,那么带有CASE
表达式的更新应该能够解决这个问题:
UPDATE yourTable
SET position = CASE WHEN position = 1 THEN 2 ELSE 1 END
WHERE id IN (1, 2);
答案 2 :(得分:0)
选项-1
UPDATE table SET pos = (CASE pos WHEN 1 THEN 2 ELSE 1 END) WHERE pos = 2;
选项-2
如果值始终为0或1,则可以使用按位异或运算符。
UPDATE dbo.Table1 SET col2 = (col2 ^ 1);
答案 3 :(得分:0)
也许您应该在代码上尝试orderBy命令。 SQL代码是
SELECT * FROM YourTable ORDER BY position desc;
在这种情况下,您的整个职位列将被撤销。 我不知道php,但我相信你可以修改该命令以供你使用。