UPDATE
で行を更新する場合、UPDATE
ステートメントに設定されているフィールドの一部がNOT field='value'
を保持する場合、その行が常に影響を受けていることが常に保証されますか?MySQL同値vs.更新
これはまた、フィールド値が一定の任意の2つの連続したフィールドに対して、常に0行に影響を与えることを意味しますか?
UPDATE
で行を更新する場合、UPDATE
ステートメントに設定されているフィールドの一部がNOT field='value'
を保持する場合、その行が常に影響を受けていることが常に保証されますか?MySQL同値vs.更新
これはまた、フィールド値が一定の任意の2つの連続したフィールドに対して、常に0行に影響を与えることを意味しますか?
はい、最初のクエリは、両方のカウントに既に
正しい行わとして==演算子は存在しないものの結果のみを示しないSQLクエリに変更された行のため、2番目のクエリは、(任意の行を変更していないためMySQLで - 私はあなたが分かりやすくするために使用したと仮定しています)。
影響を受ける行は、が変更された行のみをカウントします。。したがって、フィールドのいずれも変更されない場合、何も影響を受けません。この変更の比較では、クエリで実際に使用されているものとは異なり、大文字と小文字が区別されます。
編集:UPDATE文についてはhttp://dev.mysql.com/doc/refman/5.1/en/mysql-affected-rows.html
、デフォルトで影響を受けた、行の値が実際に変更された行の数です。 mysqldに接続するときにmysql_real_connect()にCLIENT_FOUND_ROWSフラグを指定すると、affected-rowsの値は "found"の行数になります。つまり、WHERE句でマッチします。
「実際に変更された」コンセプトをMySQLがどのように決定するかについてのリンクを探しています。言い回しに基づいて、前と後の値がバイナリレベルで等しくない場合にのみ、実際に変更されたとみなすことを意味することは明らかです。
ソースにダイビングすることなく、私はおそらくそれを証明することはできません。
私はまた、いくつかの型変換に関連する問題を考えました。例えば、日の解決で与えられた日付が、同じ日の 'DATETIME'と同じであるかもしれないと思うかもしれませんが、' UPDATE'時間は0:00:00になります。 – dronus
'=='を '='に編集しました。 – dronus
可能なすべての変換(文字列<->数字<->回)では、私の最初のステートメントへの答えは「いいえ」であるとの悪い気持ちを持っています。 – dronus