如果表存在,则删除表中的记录。

17 浏览
0 Comments

如果表存在,则删除表中的记录。

我有很多删除查询,但在一些生产数据库中找不到某些表。我需要对这个问题做出简单的决策。

像这样的查询:

DELETE b.* FROM `table` b
JOIN `another_table` u
ON u.key2 = b.key
WHERE u.key3 <> ?

我需要像这样的东西:

如果表`table`存在,则删除b.* FROM `table` b ...

0
0 Comments

当需要删除一个表中的记录时,如果该表存在,你将需要依赖一个自定义的存储过程来实现。类似于以下的代码:

-- 定义存储过程

CREATE PROCEDURE delete_if_exists(IN tbl CHAR(80))

BEGIN

IF tbl IN (SELECT table_name FROM information_schema.tables WHERE table_schema = "db_2_44afb7")

THEN

SET @query = CONCAT("DELETE FROM ", tbl);

PREPARE stmt FROM @query;

EXECUTE stmt;

END IF;

END //

-- 调用存储过程

CALL delete_if_exists("mytable");

CALL delete_if_exists("myothertable");

你可以根据自己的需要调整"DELETE FROM",...的部分。

参考示例:http://sqlfiddle.com/#!2/2ee190/3

以上就是如果删除表中的记录,同时确保表存在的问题的解决方法。

0
0 Comments

如果表存在,则从表中删除记录的原因是,用户不想删除整个表,只想删除表中的记录。

解决方法是,在执行删除命令之前,在表上使用IF EXISTS语句进行判断。下面是一个示例代码:

IF EXISTS(SELECT table.records FROM table WHERE ...)
      DELETE records_names FROM ...

如果在这里的"select query here"中判断表存在,然后再执行删除操作。这样可以确保只删除表中的记录而不删除整个表。

这篇文章中有更多的示例。

用户想要从表中删除记录,而不是删除整个表。为了实现这个目的,可以在删除命令之前使用IF EXISTS语句来判断表是否存在。这样可以确保只删除表中的记录而不删除整个表。

0