1

列 A を持つテーブル T があります。A はデフォルトの NULL で始まりました。40 行後、デフォルトを 1 に変更しました。3 つの行の値は 2 でした。列 A が 2 ではないすべての行を選択し、それらを新しいデフォルトの 1 に設定しようとしました (これは、テーブルを変更しました)。私が最初に試した:

update T set A=1 where A != 2;

なだ。うまくいきませんでした。ゼロ行が選択されました。次に試しました:

update T set A=1 where !(A=2);

いいえ、何もありません。更新に何か問題があるかどうかを確認するために、それらを選択にプラグインしようとしましたが、それらも何も返しませんでした。MySQL リファレンス マニュアルには、!= と ! は有効な演算子であり、そのコンテキストでは完全に有効である必要があります。IS NULL を使用して最終的に目標を達成しましたが、これらのステートメントは機能するはずでした。それで、何が得られますか?なぜそれがうまくいかなかったのですか?

MySQL バージョンを実行しています: 5.1.41-3ubuntu12.6 (Ubuntu)

4

1 に答える 1

3

試す:

update T set A=1 where A != 2 or A is null; 

NULLしたがって、評価を含む比較NULL(UNKNOWN)は決して true になりません。

于 2010-09-04T10:53:16.297 に答える