多表的查询信息\u模式,在查询结果中包含表

6l7fqoea  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(243)

我正在查询mysql,wordpress数据库,寻找使用特定插件的网站。我不知道链接所在的表是什么,这些表的格式如下:wp%%\u postemta,%%值并不总是连续的,并且不是每个表都包含我要查询的值。
我开发了一个查询来搜索
此查询用于返回所需的值,但无法将此数据的结果绑定到每行的相应表中。我不知道怎么弄到那辆车

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语句中插入要查询的对应表?

wnvonmuf

wnvonmuf1#

如果你搬家 select post_id, meta_value from 完全进入组\u concat,您应该能够将表名插入选择列表;像这样: GROUP_CONCAT(CONCAT('select "', A.tb, '" AS theTable, post_id, meta_value from'... 我还没有仔细研究过您想要的确切查询,但在这些情况下,分隔符通常可以是简单的 ' UNION ' .
通用格式

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

制作 information_schema.tables 不过,子查询似乎过于复杂了。

相关问题