我有两张表格,一张是关于工作期限的,一张是关于描述工作的.每个作业(job)都有一个状态,有些状态意味着必须从另一个表中删除作业(job)的截止日期.

我可以轻松地通过LEFT JOIN分来确定符合我标准的工作/截止日期:

SELECT * FROM `deadline`
LEFT JOIN `job` ON deadline.job_id = job.job_id
WHERE `status` = 'szamlazva'
OR `status` = 'szamlazhato'
OR `status` = 'fizetve'
OR `status` = 'szallitva'
OR `status` = 'storno'

(status属于job表,而不是deadline表)

但当我想从deadline中删除这些行时,MySQL会抛出一个错误.我的问题是:

DELETE FROM `deadline`
LEFT JOIN `job`
ON deadline.job_id = job.job_id
WHERE `status` = 'szamlazva'
OR `status` = 'szamlazhato'
OR `status` = 'fizetve'
OR `status` = 'szallitva'
OR `status` = 'storno'

MySQL错误没有说明什么:

您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解在截止日期前使用"LEFT JOIN job"的正确语法.job_id=job.作业(job)id,其中status=第1行的"szaml"

如何将我的SELECT变成一个有效的DELETE查询?

推荐答案

您只需指定在哪些表上应用DELETE.

仅删除deadline行:

DELETE `deadline` FROM `deadline` LEFT JOIN `job` ....

删除deadline行和job行:

DELETE `deadline`, `job` FROM `deadline` LEFT JOIN `job` ....

仅删除job行:

DELETE `job` FROM `deadline` LEFT JOIN `job` ....

Mysql相关问答推荐

我可以指示MariaDB-Install-db和MariaDB忽略配置中的用户设置吗?

透视从另一个表添加信息的查询

为什么用PyMySQL构建的json返回结果会出现重复?

如何进行查询以在两个不同的列中搜索两个不同的数据字符串?

过滤值为0时如何在MySQL查询中设置条件?

使用 autocommit = 0 和 InnoDB 表的 LOCK TABLES 检测死锁

MySQL,递归 CTE.它如何以这种句法形式工作?

错误1075:表定义不正确;只能有一个自动列,它必须定义为一个键(使用 gorm 和 mysql)

如何解决这个特定的 SQL 查询?我的解决方案还返回不想要的值

MySQL表中给定字段的每个不同值的连续记录形成对

使用 MySQL 在树中查找 Leaf

动态创建内联 SQL 表(用于排除左连接)

没有 JDBC 类型的方言映射:1111

MYSQL:创建表中的索引关键字以及何时使用它

MySQL - 表'my_table'没有被锁定表锁定

PHP MySQLI 防止 SQL 注入

将sql查询的结果写入mysql中的文件

Mysql:创建表时将DATETIME的格式设置为'DD-MM-YYYY HH:MM:SS'

#1030 - 从存储引擎 Aria 收到错误 176读取错误校验和的页面

如何改进 INSERT INTO ... SELECT 锁定行为