2011-03-14 6 views
5

特定の列タイプが選択されている場合に、一度に複数のレコードを更新する方法を知りたいと思います。phpmyadminで一度に多くのレコードを変更する方法

私はレコードの選択方法を見つけました。私はレコードを更新する方法を見つけました。しかし、私はそれが働くために一緒に両方を行う方法を知らない。

選択:

更新テーブル
セット列= 937

だから、基本的に私は変更したい:

SELECT * '型は' = 'new' を

更新users FROM別の列の 'type'が 'new'の場合、 'table'の 'column'の情報は937になります。

おかげで、

答えて

5

あなたは、単にあなたのUPDATEステートメントにWHERE句を追加することによってこれを行うことができます:私はへの別の解決策を見つけしばらく研究した後、あなたの列名

+0

の更新にターゲットテーブル 'users'を指定することはできません。ありがとうございます、あなたは最高です! – dirk

0

あなたはサブクエリでこれを行うことができます。

update users 
set column = 937 
where id in (select id from users where type='new') 

私は彼らが間違って得た場合だけ、列名を変更します。

+0

ご返信ありがとうございますが、動作していません。次のエラーが表示されます。 FROM句 – dirk

0

に一致するように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で処理できるようにします。最後に、更新クエリが実行され、サブクエリで提供されるキーに基づいて値が変更されます。

これによって、他の誰かが数時間節約されることを願っています。

関連する問題