SQL-根据列值删除所有表中的行

ica*_*ara 5 mysql sql sql-delete

我有一个包含数百个表的 MySQL 数据库。

我需要删除基于名为“companyId”的公共列的所有表中的记录 - 该列存在于数据库的所有表中。

如何删除所有表中 columnId = somenumber 的所有记录?

先感谢您 !

伊万诺 C.

@SocratesG我尝试了你的存储过程,但我得到以下创建SP的信息:

ERROR 1064:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 '@TableName VARCHAR(128); 附近使用的正确语法。

DECLARE @MyColumn VARCHAR(128);
SET @MyColumn = 'compan' at line 4

SQL Statement:
CREATE PROCEDURE `deletePortalInstance` ()

BEGIN

    DECLARE @TableName VARCHAR(128);
    DECLARE @MyColumn VARCHAR(128);

    SET @MyColumn = 'companyId'

    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+' = 906454')
        FETCH NEXT FROM MyCursor into @TableName

    END

    CLOSE MyCursor   
    DEALLOCATE MyCursor

END
Run Code Online (Sandbox Code Playgroud)

Jun*_*son 0

DELETE FROM companyId where columnId = 1
Run Code Online (Sandbox Code Playgroud)