检查记录是否存在使用mysql删除它

时间:2014-07-14 00:27:21

标签: mysql

我正在使用MySQL,我想检查记录是否存在以及是否存在删除此记录。

我试试这个,但它不适合我:

SELECT 'Barcelone' AS City, EXISTS(SELECT 1 FROM mytable WHERE City = 'Barcelone') AS 'exists';

THEN

DELETE FROM mytable
WHERE City = 'Barcelone';

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

if语句仅允许存储过程,存储函数和触发器(在MySQL中)。

如果我理解你想要的东西,那就去做:

DELETE FROM mytable
WHERE City = 'Barcelone';

没有理由事先检查是否存在。只需删除该行即可。如果不存在,没问题。没有错误。

出于性能原因,我建议在mytable(city)上使用索引。如果你想先检查行是否存在,那很好,但delete不需要。

答案 1 :(得分:1)

如果你的意思是MySQL正在返回一条错误消息(如果你的意思是“不为我工作”),那么这正是我们期望的行为。

该SQL语法对MySQL无效。

如果要从表中删除行,请发出DELETE语句,例如

DELETE FROM mytable WHERE City = 'Barcelone'

如果您想知道删除了多少行(如果语句没有抛出错误),请立即跟随DELETE语句(在同一会话中)查询:

SELECT ROW_COUNT()

或者您正在使用的客户端库中的相应功能。

如果ROW_COUNT()函数返回0,则表示没有删除任何行。

在发出SELECT以确定是否有要删除的行时,确实没有意义(就MySQL而言); DELETE语句本身就可以解决它。

如果由于某种原因您的用例要求您检查是否有行被删除,那么只需运行一个单独的SELECT:

SELECT COUNT(1) FROM mytable WHERE City = 'Barcelone'