IF行存在然后在mysql中删除行

Sha*_*deh 6 mysql if-statement exists

我有这样的查询:

IF EXISTS(SELECT 1 FROM table1 WHERE col1 = ? LIMIT 1) THEN
DELETE FROM table2 WHERE col2 = ?
END IF
Run Code Online (Sandbox Code Playgroud)

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

IF  EXISTS(SELECT 1 FROM table1 WHERE col1 = ? LIMIT 1) BEGIN
DELETE FROM table2 WHERE col2 = ?
END
Run Code Online (Sandbox Code Playgroud)

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

das*_*ght 9

您可以将条件移动到WHERE子句中DELETE以实现相同的效果,如下所示:

DELETE FROM table2
WHERE col2 = ?
  AND EXISTS(SELECT 1 FROM table1 WHERE col1 = ? LIMIT 1)
Run Code Online (Sandbox Code Playgroud)

请注意,两个?s已切换与原始查询相关的位置.