select * from tbl1
select * from tbl2
select * from tbl3
我的问题是你可以通过使用变量来消除重复吗?例如
DECLARE @x as varchar(60)
set @x = tbl1
set @x = tbl2
set @x = tbl3
select * from @x
Go
我讨厌重新输入确切的查询是否有人知道一种方法使查询工作我认为它会节省我的时间。感谢
答案 0 :(得分:1)
为什么不为此创建stored procedure
?
示例:的
DELIMITER $$
DROP PROCEDURE IF EXISTS `selectAllTables`$$
CREATE PROCEDURE `selectAllTables`()
BEGIN
SELECT * from tbl1;
SELECT * from tbl2;
SELECT * from tbl3;
END$$
DELIMITER ;
用法:的
CALL `selectAllTables`();
答案 1 :(得分:1)
如果您在MySQL中使用Dynamic SQL (SQL Server)类型的支持,则可以使用存储过程中的prepare语句来实现此目的
第一个create a stored procedure,带有一个参数,用于在字符串中获取表名:
DELIMITER ///
CREATE PROCEDURE SelectAllRecords(__TABLE__NAME varchar(255))
BEGIN
SET @sql = CONCAT('SELECT * FROM ', __TABLE__NAME);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END///
DELIMITER ;
接下来,您可以CALL在表名中发送存储过程:
call SelectAllRecords('table1')
call SelectAllRecords('table2')
call SelectAllRecords('table3')
答案 2 :(得分:0)
如果我的问题正确,那么下面的查询将适合您。
DECLARE @x as table
set @x = select * from tbl3
select * from @x
Go