在所有表中搜索具有给定值或名称的字段[重复]
Posted
技术标签:
【中文标题】在所有表中搜索具有给定值或名称的字段[重复]【英文标题】:Search in all tables for a field with given value or name [duplicate] 【发布时间】:2018-12-07 18:15:32 【问题描述】:是否有一个纯 sql 解决方案可以在所有表中搜索具有给定值或名称的特定字段。在伪代码中,我正在寻找的查询是
SELECT * FROM * WHERE field = "value"
或
SELECT tablename, field FROM *
我已经知道如何使用 mysql information schema 来搜索包含该列的所有表,但我不确定是否(以及如何)可以将其组合到查询(或存储过程)中。
【问题讨论】:
您想要解决的真正问题是什么? 我相信最好的架构模式之一是关系数据(业务或事务或类似含义)和连接到某种“离线”级别的文本搜索器(lucene 或类似,或来自数据库提供商的额外功能) @JacekCz 我得到了一个包含很多表的数据库转储,其中一些字段的外键无效/丢失,现在我必须修复它/挖掘它。所以查询不需要很健壮,只运行几次 【参考方案1】:您可以编写一个脚本来生成所有查询:
SELECT concat('SELECT * FROM ',TABLE_NAME,' WHERE ',COLUMN_NAME,' =\'value\'')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = 'columnname'
;
然后,您可以执行结果的每一行以获取所需的数据。
【讨论】:
结果的有用性受到严格限制以上是关于在所有表中搜索具有给定值或名称的字段[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Oracle SQL:对 CASE WHEN 重复使用子查询,而无需重复子查询
如何使用 grep 在当前目录中搜索具有字符串“hello”但仅显示 .h 和 .cc 文件的所有文件?