0

次のような更新クエリを作成しようとしています。

Update entryTable set type='String' Where ID='Entry_001' or SecondID='Entry_002' or ThirdID="Entry_003" or BackupID="Entry_004"

しかし、それが行うことは、上記のパラメータ、つまり ID、SecondID、ThirdID、BackupID のいずれかが見つかった場合にテーブルを更新することです。

しかし、ユーザーが任意のパラメーターを渡すことができる更新クエリを作成する必要があり、ユーザーが渡したパラメーターに基づいてフィルター処理する必要があります。つまり、ユーザーは ID のみを渡すか、ID と SecondID の両方を渡すか、SecondID または ThirdID を渡すことができます。または all または 彼は BackupID のみを渡すことができます。基本的に、任意のパラメーターを受け入れ、それらのパラメーターに基づいて更新する更新クエリを作成したいと考えています。私の質問を理解していただければ幸いです。前もって感謝します。

4

1 に答える 1

2

常にすべての条件を追加するのではなく、より慎重にクエリを作成してみてください。このクエリを取得するために使用している言語またはフレームワークが明確でないため、具体的なアドバイスを提供することはできません。

その結果、次のように開始します。

UPDATE entryTable SET type='String' WHERE

次に、条件を 1 つずつ追加します。これらを配列に追加してから、必要に応じて「OR」または「AND」を使用して配列を結合するのが最善の場合がよくあります。

[ [ "ID=?", "Entry_001" ], [ "SecondID=?", "Entry_002" ] ]

これは次のように変換されます。

[ "UPDATE entryTable SET type='String' WHERE ID=? OR SecondID=?", "Entry_001", "Entry_002" ]

次に、データベース ライブラリのエスケープ機能を使用して、これらのプレースホルダーと値を一緒にバインドします。

やみくもに更新を発行する前にレコードをフェッチしてから、主キーのみに基づいて更新することもできます。

SELECT ID FROM entryTable WHERE ID='Entry_001' ...

次に、単一のレコードが返された場合は、更新を実行します。

UPDATE entryTable SET type='String' WHERE ID=?

複数のレコードが返される場合は、ユーザーに検索をより適切に定義するように求めます。

于 2013-06-05T14:44:35.253 に答える