Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如果列A存在且等于B,则SQL从所有中删除所有_Mysql_Sql_Sql Delete - Fatal编程技术网

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