首页 > 解决方案 > SQL - 如果存在另一个表,则删除行

问题描述

如果另一个表不存在,我正在尝试从表中删除一行。我尝试使用以下语句

 IF (NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'user3project3'))
 BEGIN
     DELETE FROM user1table WHERE id=3
 END

但是我收到以下错误:

 Unrecognized statement type. (near "IF" at position 0)

如果这很重要,我正在将 phpMyAdmin 与 XAMPP 一起使用。提前非常感谢!

标签: mysqlsql

解决方案


IF语句只允许在编程块中使用,这实际上意味着在存储过程、函数和触发器中。

可以在单个查询中表达此逻辑:

DELETE FROM user1table
    WHERE id = 3 AND
          NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'user3project3');

也就是说,如果您为每个用户存储一个单独的表,那么您的数据模型非常可疑。


推荐阅读