我有三个 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/