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

8 浏览
0 Comments

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

我有一个类似这样的查询:

如果存在(SELECT 1 FROM table1 WHERE col1 = ? LIMIT 1) THEN
DELETE FROM table2 WHERE col2 = ?
END IF

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

如果存在(SELECT 1 FROM table1 WHERE col1 = ? LIMIT 1) BEGIN
DELETE FROM table2 WHERE col2 = ?
END

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

0
0 Comments

MySQL中如果要在删除数据时判断某一行是否存在,可以将判断条件放入DELETE语句的WHERE子句中,实现相同的效果。例如,可以使用以下语句进行删除操作:

DELETE FROM table2

WHERE col2 = ?

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

需要注意的是,原始查询中的两个问号(?)的位置已经交换。

据我所知,只有在MySQL中才可以使用limit 1来限制查询结果的行数。而TOP 1则是SQL Server的语法。

在这种情况下,LIMIT 1是不必要的,因为EXISTS关键字已经具有相同的功能。

0