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

lmvvr0a8  于 2022-11-21  发布在  Mysql
关注(0)|答案(4)|浏览(116)

我 有 一 个 MySQL 数据 库 与 一些 数百 表 。
我 需要 删除 基于 名 为 " companyId " 的 公共 列 的 所有 表 中 的 记录 - 此 列 存在 于 数据 库 的 所有 表 中 。
如何 删除 columnId = somenumber 的 所有 表 中 的 所有 记录 ?
先 谢谢 你 !
伊万诺 角
@SocratesG 我 尝试 了 您 的 存储 过程 , 但 在 创建 SP 时 出现 以下 错误 :
错误 1064 : SQL 语法 中 有 错误 ;查看 与 MySQL 服务 器 版本 对应 的 手册 , 以 了解 在 '@TableNameVARCHAR ( 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

中 的 每 一 个

uxh89sit

uxh89sit1#

你可以试试这个

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 + ' <= 1000'
            )
    FETCH NEXT FROM MyCursor into @TableName
END
CLOSE MyCursor   
DEALLOCATE MyCursor
dpiehjr4

dpiehjr42#

DELETE FROM <tblName> where columnId = <Your Column Id val>

但是我认为您使用了引用完整性约束,使用了外键,并使用了On Delete Cascade
根据你的新消息

更新日期:

DELETE t1, t2
      FROM <table1> t1
      JOIN <table2> t2 ON t1.columnId = t2.columnId 
     WHERE t1.columnId  = <Your Column Value>

说明:
1.这里我们要从多个表中删除记录,因此使用DELETE FROM table1,table2
1.由于所有表中有一个同名列,因此我们将其设置为JOIN,以便可以一次删除100个表中所有行
3.最后,我们有条件WHERE t1.columnId = 1,意味着在table1中,检查columnId = 1,所以当我们连接时,它选择100表中的所有这样的行,然后删除它。

jrcvhitl

jrcvhitl3#

DELETE FROM table_Name where columnn_name = value ;

这些例子

DELETE fom students where rll_num = 5 ;
iqxoj9l9

iqxoj9l94#

DELETE FROM companyId where columnId = 1

相关问题