INNER JOIN可以用于SELECT语句,但不能用于DELETE语句。

37 浏览
0 Comments

INNER JOIN可以用于SELECT语句,但不能用于DELETE语句。

这个问题已经有答案了

在MySQL中使用JOIN删除

如何使用INNER JOIN在SQL Server中删除?

为什么这个有语法错误

DELETE FROM `print_mailing_request` pmr
INNER JOIN `person` p
  ON p.id = pmr.person AND p.email LIKE '%@TEST.COM'
WHERE 
pmr.sent_to_fulfiller != 'y'

而这个可以正确地工作而没有错误?

SELECT * FROM `print_mailing_request` pmr
INNER JOIN `person` p
  ON p.id = pmr.person AND p.email LIKE '%@TEST.COM'
WHERE 
pmr.sent_to_fulfiller != 'y'

admin 更改状态以发布 2023年5月24日
0
0 Comments

正确的语法应该是以下格式,不使用表别名。您忘记了要删除数据的表名。

DELETE `print_mailing_request`
FROM `print_mailing_request`
INNER JOIN `person` 
  ON `person`.id = `print_mailing_request`.person 
  AND `person`.email LIKE '%@TEST.COM'
WHERE `print_mailing_request`.sent_to_fulfiller != 'y'

0
0 Comments

您需要告诉delete从哪张表中删除:

DELETE pmr
    FROM `print_mailing_request` pmr INNER JOIN
         `person` p
         ON p.id = pmr.person AND p.email LIKE '%TEST.COM'
    WHERE pmr.sent_to_fulfiller != 'y';

from之前,delete语句后跟表的别名。我假设它是提到的第一个表。

0