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

标签 sqlite

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

DELETE FROM myTable WHERE Name IS NULL;

现在假设我有 20 个表,它们没有以任何模式命名。我想从数据库中的每个表中删除名称列为 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

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

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

关于sqlite - 如何将 SQLite 命令应用于所有表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16160952/

相关文章:

android - 在 Android 应用程序上为 "offline viewing"的在线服务保留用户数据

Android 从 Assets 复制 SQLite 数据库在 KitKat 4.4 上不起作用

sql - sqlite_stat1表的解释

c# - Xamarin Forms SQLite 更新

php - mysql、sqlite 和 pgsql 之间的语法差异

ios - 如果 fk 为空,则 sqlite3 准备语句失败。它不应该

sqlite - Metro8 SQLite选择查询

python - 尝试迁移数据库时出错(slalchemy、slqite3)

java - 如何在 Activity 中将查询结果原始显示为表格?

android - 不要在消息中显示联系电话