mysql - SQL 如果 A 列存在且等于 B 则从 all 中删除所有

标签 mysql sql sql-delete

如何删除数据库中所有表中的所有记录,其中该表有一个名为 systemid 的列,其中 systemid 不等于 1 或 2?

所以我需要查看表中是否包含某个列名,如果是,则检查该列的所有记录的值,如果不是1或2,则删除。在数据库中的所有表上。

尝试清理开发数据库。

--- 更新 ---

我发现了这个线程:SQL Server : check if table column exists and remove rows

详细信息如下:

IF EXISTS( SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'TAB1')
  IF EXISTS( SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'TAB1' AND  COLUMN_NAME = 'COL1')
    delete TAB1 where COL1 not in (select COL2 from TAB2);

但是由于缺乏知识和经验,我一生都无法正确地从 SQL 查询中完成我想要实现的目标。有人可以提供示例代码并进行解释吗?

谢谢各位大神!

最佳答案

DECLARE @TableName VARCHAR(128);
DECLARE @MyColumn VARCHAR(128);
SET @MyColumn = 'MyColumnName'
DECLARE MyCursor CURSOR FOR  
(SELECT OBJECT_NAME(c.id) as ObjectName
              FROM dbo.syscolumns c
              WHERE 
                OBJECTPROPERTY(c.id,'ISTABLE') = 1 --Search for tables only
                AND c.name = @MyColumn)

OPEN MyCursor 
FETCH NEXT FROM MyCursor into @TableName
WHILE @@FETCH_STATUS = 0  
BEGIN
    EXEC
            (
                 'DELETE ' + @MyColumn
                +' FROM ' + @TableName  
                +' WHERE ' + @MyColumn + ' not  in (1,2)'
            )
    FETCH NEXT FROM MyCursor into @TableName
END
CLOSE MyCursor   
DEALLOCATE MyCursor

关于mysql - SQL 如果 A 列存在且等于 B 则从 all 中删除所有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23111235/

相关文章:

mysql - MySQL 可以返回字符串中与正则表达式匹配的部分吗?

mysql - 选择连接条件错误的查询

mySQL REGEXP 逗号之间的匹配值

sql - MSSQL 中的自动递增字母数字 ID

MySQL - 用于日期比较的 Where 子句

mysql - Mysql 语法错误

sql - 删除SQL循环

performance - SQLite删除慢

c# - 使用 HQL 语句按 ID 列表删除多条记录

mysql - 将 Controller 在 Blade 文件中获取的值传递给查询