我正在查询一个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语句中插入要查询的相应表?
答案 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
子查询似乎过于复杂化了。