2

次の2つのフィールドを持つテーブルがあります

jobid |  statusCode

ここで私がやりたいことは次のとおりです。「statusCodeが特定の値よりも小さい場合は、指定されたjobidでreocrdを削除し、そうでない場合は、このレコードを新しいstatusCodeで更新します」

私の質問は、上記のジョブを実行する単一の SQL 操作があるか、それとも複数の SQL "if - else" クエリを使用する必要があるかということです。私のDBはSQLite3です

よろしく、Farrukh Arshad。

4

2 に答える 2

1

SQLiteには、更新と挿入を組み合わせたコマンドUPDATE OR REPLACEがありますが、これは、重複の挿入を避けたい一般的な場合にのみ使用されます。

DELETEコマンドには必要な機能がありません。

SQLiteには制御フローステートメントがないため、最善の策は両方のDELETE/UPDATEステートメントを実行することです。

DELETE FROM MyTable
WHERE jobid = ?
  AND statusCode < ?;

UPDATE MyTable
SET statusCode = ?
WHERE jobid = ?;        -- does nothing if record was deleted
于 2013-02-07T08:42:02.737 に答える
0

このようなものが役立つはずです:

CASE WHEN status_code < some_value 
THEN
  DELETE FROM MyTable
  WHERE jobid = ?
ELSE
  UPDATE MyTable
  SET statusCode = ?
  WHERE jobid = ?
END
于 2013-02-07T08:50:27.010 に答える