gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 00:22:32 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com