我在 mySQL 数据库中有 32 个表,我想从中选择包含特定值的表。我想做这样的事情:
SELECT * FROM * WHERE DeviceId = '2009240214';
我知道有很多包含 DeviceId 的表。有没有一种方法可以一次选择所有这些,而不是一个一个加入,以获得 DeviceId = '2009240214' 在表中的结果?
谢谢
答案 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';
中的值
这是我所能得到的最接近的。而且我知道还有改进的余地。