我想从多个表中删除带有条件的行。
DELETE
FROM table_1
WHERE lst_mod_ymdt = '2011-01-01'
问题是,表的数量是400,从table_1到table_400。 我可以将查询应用于单个查询中的所有表吗?
答案 0 :(得分:1)
如果您正在使用SQL Server 2005及更高版本,您可以尝试这样的事情(其他版本和RDMS也有类似的方法来执行此操作):
DECLARE @sql VARCHAR(MAX)
SET @sql = (SELECT 'DELETE FROM [' + REPLACE(Name, '''','''''') + '] WHERE lst_mod_ymdt = ''' + @lst_mod_ymdt + ''';' FROM sys.tables WHERE Name LIKE 'table_%' FOR XML PATH(''))
--PRINT @sql;
EXEC ( @sql );
和动态sql一样,请记住转义'
字符。
如果您说table_341没有lst_mod_ymdt
列,则可能会失败。