假设我想运行以下 SQLite 命令来删除特定表中 Name 列为 NULL 的所有行:
DELETE FROM myTable WHERE Name IS NULL;
现在假设我有 20 个表,它们没有以任何模式命名。我想从数据库中的每个表中删除 Name 列为 NULL 的所有行。有没有我可以一次性使用的语句?还是我必须运行一条语句来获取表名,然后获取输出并使用每个表名运行 20 条左右的命令?
假设我想运行以下 SQLite 命令来删除特定表中 Name 列为 NULL 的所有行:
DELETE FROM myTable WHERE Name IS NULL;
现在假设我有 20 个表,它们没有以任何模式命名。我想从数据库中的每个表中删除 Name 列为 NULL 的所有行。有没有我可以一次性使用的语句?还是我必须运行一条语句来获取表名,然后获取输出并使用每个表名运行 20 条左右的命令?
这是我从 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 FROM myTable1, myTable2, myTable3 WHERE Name IS NULL;