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

如果行存在,则删除mysql中的行,mysql,if-statement,exists,Mysql,If Statement,Exists,我有这样一个问题: IF EXISTS(SELECT 1 FROM table1 WHERE col1 = ? LIMIT 1) THEN DELETE FROM table2 WHERE col2 = ? END IF DELETE FROM table2 WHERE col2 = ? AND EXISTS(SELECT 1 FROM table1 WHERE col1 = ? LIMIT 1) 但我不知道为什么上面的查询不起作用。此外,这也不起作用: IF EXISTS(SELEC

我有这样一个问题:

IF EXISTS(SELECT 1 FROM table1 WHERE col1 = ? LIMIT 1) THEN
DELETE FROM table2 WHERE col2 = ?
END IF
DELETE FROM table2
WHERE col2 = ?
  AND EXISTS(SELECT 1 FROM table1 WHERE col1 = ? LIMIT 1)
但我不知道为什么上面的查询不起作用。此外,这也不起作用:

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

MySQL告诉我有一个语法错误,我如何修复它?

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

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

请注意,这两个
已经切换了与原始查询的位置。

MySQL(通常)不是一种过程编程语言;不能在过程之外使用
IF
语句。文件中确实说明了这一点。如果你真的读了它,你也可以找到你问题的答案。有什么原因使你不能阅读文档吗?是的。因此,您几乎一直在应用程序逻辑中使用
IF
。@LightnessRacesinOrbit实际上我看到并认为在mysql中使用
IF
是可能的!无论如何,好的,谢谢。@Sajad据我所知,只有
limit 1
可以与MySql一起使用
TOP 1
是Sql Server语法()。
LIMIT 1
是不必要的<代码>存在就是这样。