查询多个表的Information_schema,在查询结果中包含表

时间:2018-04-09 18:17:43

标签: mysql

我正在查询一个mysql,wordpress数据库,使用特定的插件来查找网站reidrects。我不知道链接所在的表是什么,表格的格式如下:wp _ %% _ postmeta,%%值并不总是顺序的,并且每个表都不包含我要查询的值。

我开发了一个搜索

的查询

此查询用于返回我想要的值,但我无法将此数据的结果绑定到每个行的相应表。我无法弄清楚如何获得

SET GROUP_CONCAT_MAX_LEN  = 50000;
SELECT 
CONCAT('select * from (select post_id, meta_value from ',
        GROUP_CONCAT(tb
            SEPARATOR ' where meta_key like "_gdd_speedy_page_redirect" union select post_id, meta_value from '),
        ' where meta_key like "_gdd_speedy_page_redirect") as Wdp_tables ')
INTO @wdp_table_query FROM
(SELECT 
    CONCAT(table_schema, '.', table_name) tb
FROM
    information_schema.tables
WHERE
    table_name LIKE '%_postmeta') A;
SELECT @wdp_table_query;
prepare stmt from @wdp_table_query;
execute stmt;
deallocate prepare stmt;

返回的数据如下所示:

POST_ID  |  META_VALUE
29       |  URL_HERE
493      |  NEXT_URL_HERE

我需要像这样返回数据:

TABLE           |  POST_ID  |  META_VALUE
wp_03_postmeta  |  2        |  URL_HERE
wp_74_postmeta  |  493      |  NEXT_URL_HERE

有没有办法可以在select语句中插入要查询的相应表?

1 个答案:

答案 0 :(得分:0)

如果将select post_id, meta_value from完全移动到group_concat中,您应该只需将表名插入选择列表即可;像这样的东西:

GROUP_CONCAT(CONCAT('select "', A.tb, '" AS theTable, post_id, meta_value from'...

我没有仔细查看您确切的所需查询,但在这些情况下,SEPARATOR通常可以只是' UNION '

一般格式

CONCAT([wrapper_start]
   , GROUP_CONCAT([table_query... built from a CONCAT] SEPARATOR ' UNION ')
   , [wrapper_end]) AS query

使information_schema.tables子查询似乎过于复杂化了。