【问题标题】: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 我得到了一个包含很多表的数据库转储,其中一些字段的外键无效/丢失,现在我必须修复它/挖掘它。所以查询不需要很健壮,只运行几次

标签: mysql


【解决方案1】:

您可以编写一个脚本来生成所有查询:

SELECT concat('SELECT * FROM ',TABLE_NAME,' WHERE ',COLUMN_NAME,' =\'value\'')
  FROM INFORMATION_SCHEMA.COLUMNS
 WHERE COLUMN_NAME = 'columnname'
;

然后,您可以执行结果的每一行以获取所需的数据。

【讨论】:

  • 结果的有用性受到严格限制
猜你喜欢
  • 2018-12-23
  • 2018-07-14
  • 1970-01-01
  • 2021-07-23
  • 1970-01-01
相关资源
最近更新 更多