表:
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 OR nfid,无论哪个匹配在WHERE子句中。这可以在一个查询中完成,还是我必须做两次更新?
伪SQL:
UPDATE Table SET fid = $newid OR nfid = $newid WHERE fid = $oldid OR nfid = $oldid
对任何输入感到高兴。感谢。
答案 0 :(得分:2)
您必须使用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
)
答案 1 :(得分:2)
为什么不使用两个单独的更新语句?
UPDATE Table
SET fid = $newid
WHERE fid = $oldid
;
UPDATE Table
SET nfid = $newid
WHERE nfid = $oldid
;
否则,您必须使用CASE
声明做一些时髦的事情:
UPDATE Table
SET nfid = CASE WHEN nfid = $oldid THEN $newid ELSE nfid END
, fid = CASE WHEN fid = $oldid THEN $newid ELSE fid END
WHERE nfid = $oldid
OR fid = $oldid
答案 2 :(得分:-1)
我认为它的意思是:
UPDATE Table SET fid = $newid, nfid = $newid WHERE fid = $oldid OR nfid = $oldid
所以用逗号OR
,