2

テーブル:

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 句で一致する方を更新する必要があります。これは 1 回のクエリで完了できますか? それとも更新を 2 回行う必要がありますか?

疑似 SQL:

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

どんな入力でも幸せです。ありがとう。

4

3 に答える 3

2

You have to use IF, I also added there quotes, to read it better:

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

Explanation:

if fid = $oldid, then it will do fid = $newid, otherwise it will leave value (fid = fid)

if nfid = $oldid, then it will do nfid = $newid, otherwise it will leave value (nfid = nfid)

于 2013-10-24T13:45:12.913 に答える
-1

私はそれが次のように書かれることを意図していると思います:

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

したがってOR、コンマに置き換えます,

于 2013-10-24T13:43:51.397 に答える