我正在使用MySQL,我想检查记录是否存在以及是否存在删除此记录。
我试试这个,但它不适合我:
SELECT 'Barcelone' AS City, EXISTS(SELECT 1 FROM mytable WHERE City = 'Barcelone') AS 'exists';
THEN
DELETE FROM mytable
WHERE City = 'Barcelone';
感谢您的帮助。
答案 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'