ピット【のMySQL]のMySQLの更新

数回は、最近、私はそのような次の図のように、爪に開発する学生を求めています:

アバター

問題が加算されます:  MySQLはレコード構文を更新する正しいですが、レコードが更新されていません...

ただ、この問題が発生した、私はこの文は直接問題があることがわかったテストライブラリで行われ、まだ開発と説明してしまっ  異なり 、ここで私がシミュレートするためのテストデータを使用して、次のとおりです。

問題のあるSQL文:

update apps set owner_code='43212' and owner_name='李四' where owner_code='13245' and owner_name='张三';  

次のように実行の以前の記録は次のとおりです。 アバター

次のように実行を記録した後です。 アバター

見ることができ、学生の開発の結果は、実際の効果を持っている「ことが影響していないようです」、と述べていないよう。

owner_name的值没有变,但owner_code变成了0!  

どうして?

文法は問題ありませんと思われ、MySQLの構文は、公式ドキュメントを巻い更新します。アバター

COL_NAME =値のカンマ区切りのリストには、突然すべての突然の、学生が読むべきマルチフィールド更新ステートメントを開発したいassignment_listフォーマットをされて参照してください。

update apps set owner_code='43212' , owner_name='李四' where owner_code='13245' and owner_name='张三';  

そして、再テストをバックに行きます:アバター

案の定、この場合は、所望の結果となっています!

概要 :  あなたは複数のフィールドを更新したい場合は、UPDATEステートメントでは、フィールド間に「AND」を使用することはできませんが、カンマで区切る必要があります。

追伸 :彼らは一瞬振り返ったときに、空の背後にあるので、なぜ使う「AND」の時間で区切られ、owner_code = 0は、奇妙な結果が表示されますか?繰り返し検索しようとした後:

update apps set owner_code='43212' and owner_name='李四' where owner_code='13245' and owner_name='张三';  

それはと同等です。

update apps set owner_code=('43212' and owner_name='李四') where owner_code='13245' and owner_name='张三';  

そして、  (「43212」とOWNER_NAME =「ジョン・ドウ」)は 論理式であり、ここではOWNER_NAME「ジョン・ドウ」を知ることは難しいことではありません。したがって、結果は論理式で  falseに 、  0へのMySQLと同等でfalseに!

おすすめ

転載: blog.csdn.net/suifeng629/article/details/94045965