2011-08-09 8 views
22

すべてのMySQLテーブルの行を同時に更新するにはどうすればよいですか?MySQLテーブルのすべての行を同時に更新するには?

例えば、私はテーブルを持っている:

id | ip | port  | online_status | 
1  | ip1 | port1  |    | 
2  | ip2 | port2  |    | 
3  | ip3 | port3  |    | 
4  | ip4 | port4  |    | 
5  | ip5 | port5  |    | 

私はcronジョブを作成し、いくつかのサーバを監視することを計画していますが、私は、同時にテーブルからそれらのすべてを更新するために、正確に方法がわかりません。どのようにそれを行うにはいくつかの例は何ですか?

+0

あなたのデータは、データ/情報が関与するものであるところから来て、何を更新したいですか?あなたが書いたことからあまり明確ではありません。あなたは本当にすべての行を同時に更新することはできません。 – Sleeperson

+0

詳細を提供する必要があります。どのように更新する必要がありますか?どのような種類の列/情報を更新する必要がありますか? – ajreal

答えて

25

where句を省略します:

update mytable set 
column1 = value1, 
column2 = value2, 
-- other column values etc 
; 

これは、すべての行に同じ値が得られます。

これは、あなたが望むものではないかもしれません - その後、質量inserttruncateを考えてみましょう。あなたが異なる値を割り当てたい場合は、TRANSACTION技術を使用する必要があります

truncate mytable; -- delete all rows efficiently 
insert into mytable (column1, column2, ...) values 
(row1value1, row1value2, ...), -- row 1 
(row2value1, row2value2, ...), -- row 2 
-- etc 
; 
22
update mytable set online_status = 'online' 

を。

7

フィールドのデフォルトのNULL値は "not null"です。そのため、レコードのフィールド値をnullに設定する前に、レコードを "null"に設定する必要があります。そして、次のことができます。

UPDATE `myTable` SET `myField` = null 
-1
UPDATE dummy SET myfield=1 WHERE id>1; 
+1

あなたのコードがなぜその解決策であるのかの説明を追加して、コードのみの回答を避けてください。この回答が今後誰か他の人に役立つかもしれないことを忘れないでください。 –

+0

これは実際にはすべての行を更新するわけではなく、IDが1の場合は更新されません。 – Ben

関連する問題