And*_*rew 1 sql t-sql sql-server sql-server-2008-r2
我有一个表存储某些表的名称 - tableNames.我想在其中一些表上运行DELETE语句(删除它们所代表的表中的所有行,而不是从tableNames中删除它们).我以为我可以做到
DELETE FROM (SELECT tableName FROM tablesNames WHERE ...) AS deleteTables
Run Code Online (Sandbox Code Playgroud)
但我不断收到错误的语法错误.我还想过迭代WHILE循环中的表并使用变量存储,但我希望有更简单的方法.具体来说,这适用于Microsoft SQL
你不能那样做,因为内部SELECT只是你要删除的另一个集合.
基本上你是在创建一个表名表并告诉DB删除它.如果没有动态的sql,即使迭代它们也行不通EXEC
你需要自动化这个过程吗?
我过去所做的就是这样的
SELECT
'DELETE ' + tableName
FROM
tablenames
WHERE
[conditions]
Run Code Online (Sandbox Code Playgroud)
你的输出将如下所示:
DELETE myTableName1
DELETE myTableName2
DELETE myTableName3
Run Code Online (Sandbox Code Playgroud)
然后只需将此查询的结果复制出窗口并运行它们.
如果需要在SQL中自动执行此操作,则可以连接结果中的所有输出字符串,并将它们作为参数发送给EXEC调用.