如何删除数据库中所有表中的所有记录,其中该表有一个名为 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/