如何编写查询以删除行程?

问题描述

查询困难。我是sql的新手,因此尝试提出更好的查询删除行程。

有人知道如何在一个查询中简化操作吗?

谢谢

解决方法

如果您要在一个语句中对所有表执行删除操作,并且碰巧使用了支持CASCADE的SQL引擎,那么您可能很幸运。

从您的示例查询中发现,所有表共享一个链接的PK \ FK关系。

  • 通过checkpoint_id的地点
  • 通过day_id的检查点
  • trip_id中的天数
  • Trips(在顶部)

我的推断是,TRIP是链条的顶端。如果您专门定义了PK \ FK关系“ CONSTRAINT”,这对于良好的数据库设计是应该的,那么在每个表上,都可以使用选项CASCADE更改约束。完成此操作后,只需简单地从行中删除一行,即可通过定义的关系自动删除下面的所有其他行。

换句话说,有了CASCADE和支持它的SQL ENGINE,您只需发出最后一个delete语句,然后隐含其余语句即可。

DELETE FROM trips WHERE id = 27

在此处检查table constraint选项。注意CASCADE的定义。 Similar question,并在此处进行说明。