delete FROM tuan_details where tuan_id<>14
これは、tuan_idが14である行のみを保持する必要がありますが、tuan_idがnullの行も保持されます。MySqlは予期したとおりに結果を返しません。
なぜそうですか?
delete FROM tuan_details where tuan_id<>14
これは、tuan_idが14である行のみを保持する必要がありますが、tuan_idがnullの行も保持されます。MySqlは予期したとおりに結果を返しません。
なぜそうですか?
nullはこれらの比較には含まれません。代わりにnullが代わりに使用されます。
NULL
は、SQLで特別であるクエリまたは条件を追加することができます。あなたが持っている条件:tuan_id <> 14
は14
と異なる値の場合にのみTRUE
になります。 tuan_id
がNULL
ある行の場合、:
tuan_id <> 14
は次のようになります。
と評価さNULL <> 14
:
UNKNOWN
ので、これらの行が削除ないです。 TRUE
と評価すると、WHERE
の条件が満たされます。彼らはFALSE
またはUNKNOWN
と評価されると拒否されます。
SQLだから3-valued logic
を使用していますあなたが同様にNull値を削除したい場合、あなたはこの文を使用することができます。
DELETE
FROM tuan_details
WHERE tuan_id <> 14
OR tuan_id IS NULL ;