在所有表中搜索具有给定值或名称的字段[重复]

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 文件的所有文件?

php函数以获取数据,将具有通用字段名称的多个表连接起来并显示输出[重复]

选择两个不同字段之间的范围包含给定数字的数据