Mysql 如何重构此多表delete语句

Mysql 如何重构此多表delete语句,mysql,sql,using,cascade,sql-delete,Mysql,Sql,Using,Cascade,Sql Delete,有人能推荐一种更干净的方法,在一个查询中删除具有一对多关系的行吗 这是可行的,但我不太熟悉using子句或delete,因此我不完全理解它是如何工作的 DELETE FROM ip_record, entry using ip_record inner join entry where ip_record.site_id = ? and ip_record.ip = ? and ip_record

有人能推荐一种更干净的方法,在一个查询中删除具有一对多关系的行吗

这是可行的,但我不太熟悉
using
子句或
delete
,因此我不完全理解它是如何工作的

DELETE FROM ip_record,
            entry using ip_record 
            inner join entry 
      where ip_record.site_id = ? 
        and ip_record.ip = ? 
        and ip_record.id = entry.ip_id

我有一个想法,这可以通过级联更干净地完成,但我对约束有一种非理性的恐惧。数据库是MySQL。

是的,添加如下约束

ALTER TABLE entry
    ADD CONSTRAINT constr_entry_fk_ip
    FOREIGN KEY fk_ip (ip_id) REFERENCES ip_record (id)
    ON DELETE CASCADE ON UPDATE CASCADE
然后你就可以使用

DELETE FROM ip_record
WHERE ip_record.site_id=? and ip_record.ip=?

完成之前需要加入的任务。

谢谢,我真的很感谢你带我完成这项任务!