Запрос Information_schema для нескольких таблиц, включите таблицу в результат запроса

0

Я запрашиваю базу данных 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

Есть ли способ, которым я могу вставить соответствующую таблицу, запрашиваемую в выбранном статусе?

Теги:

1 ответ

0
Лучший ответ

Если вы полностью переместите select post_id, meta_value from в group_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 в подзапросе кажется более сложным.

  • 0
    Спасибо! Я не думал ставить кавычки вокруг tb, чтобы заполнить таблицу, а поместить его в одну строку тоже было проще.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню