如果行存在,则删除 mysql 中的行

IF row exists THEN delete row in mysql

我有这样的查询:

IF EXISTS(SELECT 1 FROM table1 WHERE col1 = ? LIMIT 1) THEN
DELETE FROM table2 WHERE col2 = ?
END IF

但我不知道为什么上面的查询不起作用。这也不起作用:

IF  EXISTS(SELECT 1 FROM table1 WHERE col1 = ? LIMIT 1) BEGIN
DELETE FROM table2 WHERE col2 = ?
END

MySQL 告诉我有一个语法错误,我该如何解决?

你可以把条件移动到DELETEWHERE子句中来达到同样的效果,像这样:

DELETE FROM table2
WHERE col2 = ?
  AND EXISTS(SELECT 1 FROM table1 WHERE col1 = ? LIMIT 1)

请注意,两个 ? 与原始查询相关的位置已交换。