Mysql SQL-基于列值删除所有表中的行
我有一个MySQL数据库,其中包含数百个表 我需要根据名为“companyId”的公共列删除所有表中的记录——该列存在于数据库的所有表中 如何删除columnId=somenumber的所有表中的所有记录 提前谢谢你 伊凡诺C @SocratesG我尝试了您的存储过程,但在创建SP时得到了以下结果: 错误1064:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在'@TableName VARCHAR128Mysql SQL-基于列值删除所有表中的行,mysql,sql,sql-delete,Mysql,Sql,Sql Delete,我有一个MySQL数据库,其中包含数百个表 我需要根据名为“companyId”的公共列删除所有表中的记录——该列存在于数据库的所有表中 如何删除columnId=somenumber的所有表中的所有记录 提前谢谢你 伊凡诺C @SocratesG我尝试了您的存储过程,但在创建SP时得到了以下结果: 错误1064:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在'@TableName VARCHAR128 DECLARE @MyColumn VARCHAR(128); S
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
但我认为您使用外键的引用完整性约束和对删除级联的使用
根据你的新信息
更新:
说明:
这里我们从多个表中删除记录,所以我们使用DELETE from table1、table2等
由于所有表中都有一个同名的列,所以我们创建了JOIN,以便可以一次删除100个表中的所有行
3.最后我们得到了条件,比如t1.columnId=1,表1中的意思是检查columnId=1,所以当我们加入时,它会选择100个表中的所有这类行,然后删除它
DELETE FROM table_Name where columnn_name = value ;
范例
DELETE fom students where rll_num = 5 ;
你可以试试这个
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
使用正确的外键设置您的表!我有一个MySQL数据库,有几百个表,所以我需要通过批处理删除所有表中基于名为“companyId”的公共列的记录,而不是逐表删除名为“companyId”的公共列的记录?100个表中的列名相同吗?是的,我有几百个表,所有表中都有一个名为“companyId”的列,我不明白-基本的删除语法是从表名中删除,其中一些列=一些值;我非常害怕表,那么t1和t2是什么呢?首先尝试查询,我尝试了,它成功了,我解释了答案,等了4分钟。我有一个MySQL数据库,有数百个表,所以我需要通过批处理删除所有表中基于名为“companyId”的公共列的记录,不是逐表的我有一个MySQL数据库,有几百个表,所以我需要通过批处理删除所有表中基于名为“companyId”的公共列的记录,不是逐表的我会尝试,但什么是“你可以使用你自己的值?”你是指与我要删除的记录匹配的值?是的,在那里写下与要删除的记录匹配的值。我会再试几次!对不起,耽搁了
DELETE FROM table_Name where columnn_name = value ;
DELETE fom students where rll_num = 5 ;
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