php - 我怎样才能缩短我的 mysql 查询以允许我交换我的 mysql 数据库中的索引?

标签 php mysql sql

$database->query("UPDATE main_navigation SET id = ? WHERE id = ?", array($intTempIndex, $intNewIndex));
$database->query("UPDATE main_navigation SET id = ? WHERE id = ?", array($intNewIndex, $intOldIndex));
$database->query("UPDATE main_navigation SET id = ? WHERE id = ?", array($intOldIndex, $intTempIndex));

我在想出一个更短的方法然后使用 3 个查询来交换数据库中的 ID 时遇到了一些麻烦。是否可以缩短更多?如果是这样,我可以看一个例子吗?

注意:$database->query 是我的自定义函数。

最佳答案

update main_navigation
set id = case
    when i1 then i2
    when i2 then i1
end
where id in (i1, i2);

(编辑以添加 where 子句以便不更新所有行 -- meh)

关于php - 我怎样才能缩短我的 mysql 查询以允许我交换我的 mysql 数据库中的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8563848/

相关文章:

php - 在 lat,lng 范围内查询

php - 选择相同列值以字符串开头的行,2 个问题

mysql - 我想获取群聊的未读评论列表(mysql,SQL)

mysql - 如何将数字转换为文本? (在 mySQL 中)

sql - 在 SQL 中获取两个计数的差异

php - Laravel 请求 input() 或 get()

php - mysql 分页 - 避免向客户端丢失或重复数据

mysql - SQL:添加与另一个 ProductID 一起购买的特定 ProductID

sql - 关于查询执行的问题

php - 从单选按钮内部检索查询结果