mysql - 当我尝试通过连接从多个表中删除时出现 SQL 语法错误

标签 mysql sql join sql-delete

我必须从几个表中删除。这些表是费用、结果、休假和消息。它们都有一个名为 Student_id 的字段。我想从所有这些表中删除student_id值为3的行。但是我收到语法错误。

我做错了什么?这是我的查询

delete from fees join results on fees.student_id = results.student_id join messages on results.student_id = messages.student_id join leaves on messages.student_id = leaves.student_id where fees.student_id = '3';

最佳答案

为什么不只删除四次呢?

delete from fees where student_id = 3;
delete from results where student_id = 3;
delete from leaves where student_id = 3;
delete from messages where student_id = 3;

您可以在一个查询中执行此操作,如下所示:

delete f, r, l, m
  from fees f join
       results r
       on f.student_id = r.student_id join
       messages m
       on r.student_id = m.student_id join 
       leaves l
       on m.student_id = l.student_id
  where f.student_id = '3';

但这存在风险,其中一个表将没有学生的记录。如果 join 没有匹配项,则不会删除任何内容。

关于mysql - 当我尝试通过连接从多个表中删除时出现 SQL 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25819006/

相关文章:

mysql - 什么样的连接(如果有的话)在这里是合适的?

mysql - 慢速SQL查询的特征

sql - 如何获取 DolphinDB 中复合分区的数据库辅助分区列表

sql - 创建分层定义的数据集的扁平表/ View

SQL查询得到预期结果

java - Hibernate:动态连接多个表

代码 :The state field path cannot be resolved to a valid type 中的 Java JPA Mysql 错误

MySQL 查询 Hook 服务器资源 - 未使用索引

c# - 需要与 Microsoft.SqlServer.Management.Smo Transfer 类连接的帮助

mysql - 重复列(来自右表),其值在左连接期间被取消之前