如果表存在SQL,则删除行

Ale*_*rds 13 mysql sql sql-server

我有一个脚本,使用DROP TABLE IF EXISTS删除一堆表,这是有效的.

此脚本中还有一个删除操作,用于删除另一个我不管理的表中的行.此表可能存在也可能不存在.在尝试删除行之前是否有任何检查表存在?

这需要适用于MYSQL和SQLServer

谢谢Alex

小智 11

要检入SQL SERVER,

IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'TheSchema' AND  TABLE_NAME = 'TheTable'))
BEGIN
    --Do Stuff
END
Run Code Online (Sandbox Code Playgroud)

检查mysql:

你算一算:

SELECT COUNT(*)
FROM information_schema.tables 
WHERE table_schema = '[database name]' 
AND table_name = '[table name]';
Run Code Online (Sandbox Code Playgroud)


小智 6

这个删除该行,如果不能,则不会抱怨.

DELETE IGNORE FROM table WHERE id=1
Run Code Online (Sandbox Code Playgroud)

来源于此.

  • 至少对于 MySQL 来说,这实际上在不存在的表上根本不起作用,正如所提供的链接所评论的那样。 (3认同)