如何一次从所有表中选择?

时间:2021-06-15 12:46:05

标签: mysql

我在 mySQL 数据库中有 32 个表,我想从中选择包含特定值的表。我想做这样的事情:

SELECT * FROM * WHERE DeviceId = '2009240214';

我知道有很多包含 DeviceId 的表。有没有一种方法可以一次选择所有这些,而不是一个一个加入,以获得 DeviceId = '2009240214' 在表中的结果?

谢谢

1 个答案:

答案 0 :(得分:0)

以下 SQL 语句将列出名为 books 的数据库中的所有表,其中 Column_Name device_id

DROP PROCEDURE IF EXISTS books.raky;
DELIMITER ;;
CREATE PROCEDURE books.raky()
BEGIN
    DECLARE done BIGINT DEFAULT 0;
    DECLARE table_name CHAR(255) DEFAULT "";
    DECLARE cur1 CURSOR FOR SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='books' AND COLUMN_NAME IN ('ISBN10')  ;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    open cur1;
    
    myloop: loop
        fetch cur1 into table_name;
          
        if done then
            leave myloop;
        end if;
        set @sqlraky = CONCAT("select * from `books`.", table_name, " where ISBN10 = '0195153448'");
        SELECT @sqlraky;
        prepare stmt from @sqlraky;
        execute stmt;
        drop prepare stmt;
    end loop;
    close cur1;
END; 
;;
call books.raky;

请试试上面的代码。将 books 替换为您的数据库名称,将 ISBN10 替换为 DeviceID。此外,使用 ISBN10 ='0195153448'

更改 DeviceId = '2009240214'; 中的值

这是我所能得到的最接近的。而且我知道还有改进的余地。