如何将SQLite命令应用于所有表

时间:2013-04-23 04:26:42

标签: sqlite

假设我想运行以下SQLite命令来删除Name列为NULL的特定表中的所有行:

DELETE FROM myTable WHERE Name IS NULL;

现在让我们说我有20张桌子,并且他们没有以任何模式命名。我想从数据库中的每个表中删除Name列为NULL的所有行。我可以用一个声明一次性做到这一点吗?或者我是否必须运行一个语句来获取表名,然后使用输出并使用每个表名运行20个左右的命令?

2 个答案:

答案 0 :(得分:4)

这是我在sqlite3控制台上的第一个破解:

.output tmp

SELECT "DELETE FROM " || sqlite_master.name || 
" WHERE name is NULL;" FROM sqlite_master 
WHERE type = "table" AND sqlite_master.name NOT LIKE 'sqlite_%';

.read tmp

这将为每个表生成delete语句,将其输出到文件,然后读取并运行该文件。

(我的评论是关于另一个答案中的语法,你只能从每个删除语句的一个表中删除。)

答案 1 :(得分:0)

如果每个表中都有必填列“名称”,那么

  DELETE FROM myTable1, myTable2, myTable3 WHERE Name IS NULL;