我正在寻找这个Stackoverflow Question找到我的解决方案。但是这个处理列名称的时间。但在我的情况下,列名称是未知的。即它可以是col1,col2或colN。
现在我只使用此查询来获取数据库中的表名:
SELECT DISTINCT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA='db_name';
现在有了另一个查询(连接在一起),我想扫描表中所有与给定值匹配的列。是否可以使用MySql使用任何内置函数?或者任何sql调整都能做到这一点吗?
答案 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;