1

MS Access 2010で選択した1つの列だけを更新したいのですが、以下の更新クエリを使用すると、MSAccessは
すべてのtarih列の値を更新します。以下のSelectクエリを書くだけで、正しく機能します。しかし、ネストされた更新クエリで使用すると、更新クエリはすべてのtarih列の値を更新します。私に何ができる?

UPDATE words
SET tarih='12'  
WHERE
  tarih = (SELECT FIRST(tarih)   
           FROM words  
           WHERE tarih='11')
4

1 に答える 1

1

このサンプルクエリは、これと同じ影響を与えるはずです。

UPDATE words SET tarih='12'
WHERE tarih = '11';

平易な英語では、11tarihのすべての行で12に変更されtarihます。ただし、wordsテーブルにtarih11の複数の行が含まれていtarahて、それらの行の1つだけで12に変更する場合は、データベースにどの行を通知するかを指定する方法が必要です。更新する必要がある行の1つ。

たとえば、wordsテーブルに、という名前の自動番号の主キーフィールドが含まれている場合id、次のクエリは必要な処理を実行する必要があります。

UPDATE words SET tarih='12'
WHERE id = DMin("id", "words", "tarih='11'");

words実際のテーブルに適合した同様のアプローチを試してください。実際に自動番号フィールドを使用する必要はありません。代わりに、別のタイプの主キーフィールドを使用できます。テーブルに主キーが含まれていない場合は、主キーを追加することを検討してください。主キーがない場合は、フィールドの組み合わせを使用して、更新する必要のある行を一意に識別できます。ただし、各行を一意に識別するフィールドの組み合わせがない場合はUPDATE、いくつかの一致の「最初」のみを実行することはできません。

于 2012-12-30T16:14:12.097 に答える