2016-11-24 4 views
0

最初に十分ではなかったので、完全な質問を書き直しました。Mysqlは、両方のフィールドが同時にnullの場合にのみフィールドを更新します。

このように私は、ユーザーテーブルに指定された行のIDを更新し、NULLの値だけを埋めるためにしようとしています

UPDATE USERS SET 
address='Main Street' IF current address IS NULL 
gender='M' AND full_name='JOHN SMITH' IF both gender and full_name ARE NULL 
job='Mechanic' IF current job is NULL 
WHERE id=123 

私はジェンダーとFULL_NAMEの両方をupdateingとの一部を行う方法がわかりません、私は他の分野はまだトリガとクエリのWHERE一部になるSQLupdate文で個別にかかわらずgenderfull_name

+0

Sidenote:これらの変数は、文字列であることを意味していますが、正しいですか?あなたはまたPHPとしてタグ付けされていますが、実際には変数以外の質問をサポートするコードはありません。 –

+0

はい、変数はPHP – adrianTNT

答えて

0

ifを更新する:

UPDATE table_name SET gender = $gender WHERE gender IS NULL AND full_name IS NULL 

私はこれがあなたの質問に逐語的な答えであるかもしれないもAND id = $id_you_want_to_update

+0

から来たもので、質問だったのは「性別はIS NULLと完全名はNULLです」というのを忘れてしまいました。両方がnullの場合のみ更新します。 –

3

を追加します。

UPDATE yourTable 
SET gender = $gender, 
    full_name = $full_name 
WHERE gender IS NULL AND full_name IS NULL 

しかし、あれば、レコードを更新するために、より多くの意味を作るようです性別または正式名称はNULLとなります。この場合、次のように試してみることができます:

UPDATE yourTable 
SET gender = COALESCE(gender, $gender), 
    full_name = COALESCE(full_name, $full_name) 
WHERE gender IS NULL OR full_name IS NULL 
+0

申し訳ありませんが、私の質問は十分ではなく、詳細を追加しようとしましたが、 'WHERE id = 123'と他のフィールドが更新されているため、最後に' WHERE genderとfull_name IS NULL'を使用できません他の条件で個別に(それらがヌルの場合) – adrianTNT

+0

なぜ 'WHERE'節に項を追加するのはなぜですか?いずれにせよ、私があなたに与えた2つの選択肢は、私がこれをやる方法です。 –

+0

このような注文は有効です(null genderとfull_nameの場所)? 'UPDATE users SET address = 'Back Stteet'、(gender = 'm'、full_name = 'foo' WHERE gender = null、full_name = null)、job = 'mechanic' WHERE id = 123' – adrianTNT

関連する問題