php - SQL查询有两个条件,更新匹配的一个

标签 php mysql sql

表:

id fid nfid
1  10  44
2  44  5
3  18  8

变量:

$oldid = 44;
$newid = 99;

当前查询:

UPDATE Table SET fid = $newid WHERE fid = $oldid OR nfid = $oldid

这显然将 fid 更新为 $newid,但我希望它更新 fid 或 nfid,以 WHERE 子句中匹配的为准。这是否可以在一次查询中完成,还是必须进行两次更新?

伪 SQL:

UPDATE Table SET fid = $newid OR nfid = $newid WHERE fid = $oldid OR nfid = $oldid

欢迎任何意见。谢谢。

最佳答案

你必须使用IF,我还添加了引号,以便更好地阅读:

mysql_query("
  UPDATE Table
  SET
    fid = IF (fid = ".$oldid.", ".$newid.", fid),
    nfid = IF (nfid = ".$oldid.", ".$newid.", nfid)
";

说明:

如果fid = $oldid,则执行fid = $newid,否则将保留值(fid = fid)

如果nfid = $oldid,那么它将执行nfid = $newid,否则它将留下值(nfid = nfid)

关于php - SQL查询有两个条件,更新匹配的一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19567616/

相关文章:

php - 比较日期时间今天的日期与创建日期

php - 每 10 次循环迭代增加 int var

mysql - 具有多个条件的一对多关系的联合

sql - 将结果缩减为累积组

php - MySQL Join 返回 1 行

php - 这个 "session locking"方法有一个通用名称吗?

php - 用php启动ffmpeg转码

mysql : Not allowed to return a result set from a function

在 Linux 上通过 CLI 使用复杂的密码登录 Mysql

sql - 使用 having 时返回的行数与行数之间的差异