0

一般的な文字で始まるテーブル名があります。

mytab_user
mytab_group
mytab_mode
mytab_blah

同様のテーブルが多数あります。次のようなことを行うmysqlのコマンドラインはありますか?

select * from mytab_*;

これらすべてのテーブルのすべてのデータを一度に表示してください。

4

1 に答える 1

3

ストアド プロシージャを使用してタスクを実行します。以下は、それを行う例です。

    use mydatabase;

    DROP PROCEDURE IF EXISTS showalldata;

    delimiter //
    CREATE PROCEDURE showalldata()
    BEGIN
      DECLARE done INT DEFAULT FALSE;
      DECLARE a CHAR(255);
      DECLARE cur1 CURSOR FOR (
        SELECT table_name
        FROM information_schema.tables
        WHERE table_schema = DATABASE()
            AND table_name like 'mytab\_%'
        ORDER BY table_name ASC);
      DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

      OPEN cur1;
      read_loop: LOOP
        FETCH cur1 INTO a;
        IF done THEN
          LEAVE read_loop;
        END IF;

        SET @sql = CONCAT('SELECT * from ', a);
        PREPARE stmt FROM @sql;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;

      END LOOP;

      CLOSE cur1;
    END //
    delimiter ;

    CALL showalldata();
于 2013-09-05T20:38:09.947 に答える