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

时间:2015-09-28 13:20:49

标签: mysql if-statement exists

我有这样的查询:

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告诉我有一个语法错误,我该如何解决?

1 个答案:

答案 0 :(得分:9)

您可以将条件移动到WHERE的{​​{1}}子句中以达到相同的效果,如下所示:

DELETE

请注意,这两个DELETE FROM table2 WHERE col2 = ? AND EXISTS(SELECT 1 FROM table1 WHERE col1 = ? LIMIT 1) 已经切换了与原始查询相关的位置。