に一致するようにMYCOLUMNを変更、もちろん
UPDATE `users`
SET `myColumn` = 937
WHERE `type` = 'new'
この問題。クエリで同じテーブルまたはフィールド名を参照すると、MySQLの名前空間は重複して終わり、失敗します。これを克服するには、重複した項目に名前を付ける "AS"構文を使用します。また、更新クエリでは、キーフィールドをwhere句のパラメータとして使用する必要があります。これは、通常、自動インクリメントされたIDフィールドです。この例は、これらの問題の両方の解決策を提供します。
UPDATE tbl
SET field=newValue
WHERE tbl.key IN
(SELECT idNew FROM
(Select tbl.key AS idNew
FROM tbl
WHERE field=editValue) AS tblNew);
TBL - テーブル名が更新されて
フィールド - ターゲット・フィールドでアイテムを交換する価値
tbl.key - 更新
newValueにのターゲットフィールド - テーブル内のキーのフィールド名
idNew - テーブル内のキーの新しい名前。名前を置き換え、クエリーで名前が重複しないようにします。任意の英数字の文字列にすることができます。 'ID' や 'id_new' または 'id_n'
editValue - クエリで重複したテーブル名を防ぐために、クエリの新しい名前、 -
tblNewを変更する値。任意の英数字の文字列「tbl_n」または「tbl_new」または「tbl_test」
このクエリは、キーの名前を変更し、その後、あなたが編集した必要な値を持つレコードに一致するすべてのレコードのキー値を取得することができtblを処理してMySQLで処理できるようにします。最後に、更新クエリが実行され、サブクエリで提供されるキーに基づいて値が変更されます。
これによって、他の誰かが数時間節約されることを願っています。
の更新にターゲットテーブル 'users'を指定することはできません。ありがとうございます、あなたは最高です! – dirk