Выберите данные из запроса «Показать таблицы» MySQL - PullRequest
51 голосов
/ 15 сентября 2008

Можно ли выбрать из show tables в MySQL?

SELECT * FROM (SHOW TABLES) AS `my_tables`

Что-то в этом роде, хотя вышеописанное не работает (по крайней мере, на 5.0.51a).

Ответы [ 13 ]

2 голосов
/ 19 декабря 2011

Да, SELECT из table_schema может быть очень полезным для системного администрирования. Если у вас много серверов, баз данных, таблиц ... иногда вам нужно DROP или UPDATE кучу элементов. Например, чтобы создать запрос для DROP всех таблиц с префиксным именем "wp_old _...":

SELECT concat('DROP TABLE ', table_name, ';') FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = '*name_of_your_database*'
AND table_name LIKE 'wp_old_%';
1 голос
/ 15 сентября 2017

Вы можете создать хранимую процедуру и поместить имена таблиц в курсор, а затем перебрать имена таблиц, чтобы отобразить данные.

Начало работы с хранимой процедурой: http://www.mysqltutorial.org/getting-started-with-mysql-stored-procedures.aspx

Создание курсора: http://www.mysqltutorial.org/mysql-cursor/

Например,

CREATE PROCEDURE `ShowFromTables`()
BEGIN

DECLARE v_finished INTEGER DEFAULT 0;
DECLARE c_table varchar(100) DEFAULT "";

DECLARE table_cursor CURSOR FOR 
SELECT table_name FROM information_schema.tables WHERE table_name like 'wp_1%';

DECLARE CONTINUE HANDLER 
    FOR NOT FOUND SET v_finished = 1;

OPEN table_cursor;

get_data: LOOP

FETCH table_cursor INTO c_table;

IF v_finished = 1 THEN 
LEAVE get_data;
END IF;

SET @s=CONCAT("SELECT * FROM ",c_table,";");

PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

END LOOP get_data;

CLOSE table_cursor;

END

Затем вызовите хранимую процедуру:

CALL ShowFromTables();
1 голос
/ 15 сентября 2008

Я не понимаю, почему вы хотите использовать SELECT * FROM как часть заявления.

12.5.5.30. ПОКАЗАТЬ ТАБЛИЦЫ Синтаксис

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...