MySQLでdeleteとexistを組み合わせてデータを削除
623 ワード
EXISTSは、サブクエリが少なくとも1行のデータを返すかどうかをチェックするために使用されます.このサブクエリは、実際にはデータを返さず、値TrueまたはFalseを返します.
誤った使い方:
このやり方は間違っている.この文の意味は:ABの2つの表が同じ名前の記録があるかどうかを判断して、もしあるならば、A表を削除して、すべての記録を削除して、同じ名前のあれらの記録ではありません!
だから、Existsは真偽を判断するだけだと覚えておいてください.selectとdeleteにフィルタを指定することはできません.
正しい使い方:
注意、left joinを使わないでください、左で接続するため、A表はやはりすべてリストして、依然としてすべて削除されます
誤った使い方:
delete from TableA
where exists
(
select a.*
from TableA a, TableB b
where a.aname = b.bname and a.asex = b.bsex
)
このやり方は間違っている.この文の意味は:ABの2つの表が同じ名前の記録があるかどうかを判断して、もしあるならば、A表を削除して、すべての記録を削除して、同じ名前のあれらの記録ではありません!
だから、Existsは真偽を判断するだけだと覚えておいてください.selectとdeleteにフィルタを指定することはできません.
正しい使い方:
delete TableA
from TableA a inner join TableB b
on a.aname = b.bname and a.asex = b.bsex
注意、left joinを使わないでください、左で接続するため、A表はやはりすべてリストして、依然としてすべて削除されます