在“任何列”中查找具有特定值的表名

时间:2014-03-01 09:42:21

标签: mysql

我正在寻找这个Stackoverflow Question找到我的解决方案。但是这个处理列名称的时间。但在我的情况下,列名称是未知的。即它可以是col1,col2或colN。

现在我只使用此查询来获取数据库中的表名:

SELECT DISTINCT TABLE_NAME
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE TABLE_SCHEMA='db_name';

现在有了另一个查询(连接在一起),我想扫描表中所有与给定值匹配的列。是否可以使用MySql使用任何内置函数?或者任何sql调整都能做到这一点吗?

1 个答案:

答案 0 :(得分:0)

如果是一次性活动,为什么你不能运行查询来生成给你结果的查询。

我不知道更好的解决方案:)

查询将类似于:

SET group_concat_max_len = 100000;

SELECT GROUP_CONCAT(
CONCAT( 'select "',TABLE_NAME,'.',COLUMN_NAME, '" from `',TABLE_NAME,'` where `', COLUMN_NAME, '` in ("val0", "val1") limit 1') 
SEPARATOR ' UNION ALL ' ) as query
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA='db_name' INTO OUTFILE '/tmp/queries.sql' \G

现在您可以运行源文件了。

SOURCE /tmp/queries.sql;