2012-03-15 7 views
0

私は更新しようとしているテーブルにレコードが存在する場合、MySQLのクエリはレコードを更新するでしょう。人がいればMySQLの更新

たとえばレコードがテーブルにある場合は、特定の列を空白に設定しようとしています。レコードがテーブルにない場合は、何もしたくないのです。私はPHPとMySQL

+0

テーブル内のレコードはユニークなもの? –

+8

なぜレコードを更新しようとしないのですか?それが存在しなければ、エラーは発生せず、0レコードだけが更新されます。 –

+0

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html – j08691

答えて

1

ファーストを使用してい

は、レコードの一意の識別子のいくつかの並べ替えをする必要があります。これには、PRIMARY KEY、UNIQUE制約などがあります。一意であることが保証されているusernameのユーザーがいるとします。

UPDATEクエリは、そのユーザー名を持つ行のみに影響するように制限できます。したがって、ユーザー名が存在しない場合、何も行われません。

UPDATE `tbl_users` SET `target_field` = NULL WHERE `username` = "joebloggs"; 
+0

ooo ok、単に失敗させるよりも良い方法です。私のユニークなIDはGUIDです。 ありがとうInterrobang –

+0

それは失敗しません、クエリは正常に成功します。クエリが行を更新しなかっただけで、失敗したというわけではありません。失敗したクエリの構文や列名が正しくないなどです。 – Interrobang

0

あなたはこのようにexistsing記録と更新のIDを探すことができます。

Update tbl_name set field_name=new_data 
where id_column = (select id_column from tbl_name where key_column=key_value)