mysql - 从三个不同的表中删除相关的数据

标签 mysql sql

我有三个 SQL 表项目、任务和事件。问题是任务被分配给项目,事件被分配给任务。如果我想删除该项目,我必须删除该项目的所有任务以及这些任务的所有事件。我想编写一个 SQL 语句,它首先显示我正在选择要正确删除的行,然后再实际删除它们。这是我写的一句话:

SELECT  activities.description, 
    activities.task, 
    tasks.user, 
    tasks.name, 
    tasks.proyect 
FROM tasks  JOIN proyects WHERE task.proyect=proyects.name 
        JOIN activities WHERE activities.task=tasks.name;

但是,这会引发检查您的语法错误:'JOIN events WHERE events.task=tasks.name'

我不知道出了什么问题。我检查了表的名称,它们是正确的。

最佳答案

语法错误。第一个中应为 ON:

SELECT  activities.description, 
    activities.task, 
    tasks.user, 
    tasks.name, 
    tasks.proyect 
FROM tasks  JOIN proyects ON task.proyect=proyects.name 
        JOIN activities WHERE activities.task=tasks.name;

要从表中删除所有这些结果,您可以这样做:

DELETE FROM `tasks` WHERE `task` IN (
    SELECT  activities.task, 
    FROM tasks  JOIN proyects ON task.proyect=proyects.name 
            JOIN activities WHERE activities.task=tasks.name;)

关于mysql - 从三个不同的表中删除相关的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25845253/

相关文章:

mysql - 如何在MySql中查找具有同一表别名的同一日期的多个记录(出勤)

SQL - 对英语和日语的字母数字值进行排序

sql - 在 sql join 中使用列而不将其添加到 group by 子句

mysql - 如何对从联合查询收到的值进行独特的计数?

获取具有一个属性但不具有另一个属性的值的 SQL 语句

php - 多种形式插入查询mysql

php - 我正在访问日期为 : how to assign a value when a particular date is not present? 的记录

PHP:在 MySql 中存储 IP 的正确方法和在数百万行中搜索 IP 的最快方法

sql - 从字符串计算日期时间?

php - Google Charts & MySQL Timestamp 处理问题