質問: "中川" AND tosi < 39;`」としました。 思惑は、39未満のtosiである28の高橋と20の中川が消えるものと思っておったのですが、tosiが40の佐藤も含めて、高橋、中川が消えたのです。 いったい何故、tosiが40である佐藤も含めて消えてしまったのでしょうか。 また佐藤、高橋、中川の"うち"tosiが39未満の高橋、中川を消すとき、`where`以降に佐藤と高橋と中川のうちtosiが39未満を消す、というSQL文は、どのようにして記述すべきなのでしょうか。
回答: 括弧をつければいいのかなと。 mysql> delete from tb1c where (nama = "佐藤" or nama ="高橋"or nama = "中川") AND tosi < 39; 質問のSQLだと、 名前が佐藤か、 名前が高橋か、 名前が中川でかつ年が39未満か という条件になるため意図しないデータまで消えたのだと思います。 そうそう、安全のため、試すときはtransaction使ってくださいね。 mysql> begin; mysql> delete from tb1c where (nama = "佐藤" or nama ="高橋"or nama = "中川") AND tosi < 39; mysql> rollback もしくは mysql> commit;