Mysql 如果列A存在且等于B,则SQL从所有中删除所有
如果数据库中的表有一个名为Mysql 如果列A存在且等于B,则SQL从所有中删除所有,mysql,sql,sql-delete,Mysql,Sql,Sql Delete,如果数据库中的表有一个名为systemid的列,而systemid不等于1或2,如何从该表中删除所有记录 所以我需要查看表是否包含某个列名,如果是,则检查该列的所有记录值,如果不是1或2,则删除。在数据库中的所有表上 试图清理开发数据库 ---更新--- 我发现这样的线索: 其中详细说明如下: IF EXISTS( SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'TAB1') IF EXISTS( SELECT * F
systemid
的列,而systemid
不等于1或2,如何从该表中删除所有记录
所以我需要查看表是否包含某个列名,如果是,则检查该列的所有记录值,如果不是1或2,则删除。在数据库中的所有表上
试图清理开发数据库
---更新---
我发现这样的线索:
其中详细说明如下:
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查询来完成我想要实现的目标。任何人都可以提供一个示例代码和解释吗
谢谢各位飞越者 使用
information\u schema.columns
。如上所述,您可以使用information\u schema表/列。我将创建一个存储过程来读取信息_schema,并为select created delete语句中的每一行创建一个存储过程。谢谢,我现在将对此进行研究
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