从名称中包含常用字符的表中选择*

时间:2013-09-05 19:32:53

标签: mysql

我的表名以常用字符开头,例如

mytab_user
mytab_group
mytab_mode
mytab_blah

我有很多类似的表。在mysql中是否有任何命令行可以执行类似的操作

select * from mytab_*;

并立即显示所有这些表中的所有数据。

1 个答案:

答案 0 :(得分:3)

使用stored procedure执行任务。下面是一个例子。

    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();