首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用SQL从两个数据库中获取数据并插入到临时表中?

如何使用SQL从两个数据库中获取数据并插入到临时表中?
EN

Stack Overflow用户
提问于 2016-05-09 18:27:47
回答 2查看 132关注 0票数 1

我有两个数据库oldnew。我想对两个数据库中的记录进行计数,并将它们的表名插入到新的临时表中。

我创建了临时表:

代码语言:javascript
复制
CREATE TEMPORARY TABLE tempemp (tablename varchar(50),northwindcount int(11),dest_northwindcount int(11));

和统计的记录:

代码语言:javascript
复制
select (select count(*) from northwind.orders) as northwind_cnt, (select count(*) from dest_northwind.orders) as dest_northwind_cnt;

如何插入到临时表中?

EN

回答 2

Stack Overflow用户

发布于 2016-05-09 19:03:54

不知道MySql,但在MS SqlServer T-SQL中,您会这样做:

代码语言:javascript
复制
INSERT INTO
    Tempemp(
       tablename,northwindcount,dest_northwindcount)
SELECT 
    '???' AS table make,
        (SELECT COUNT(*) FROM Northwind.Orders)
       AS Northwindcount,
    (SELECT COUNT(*) FROM Dest_Northwind.Orders) 
        AS dest_northwindcount

我的语法可能有点错,但是一般的想法是INSERT语句可以有SELECT子句而不是VALUES子句。也许在MySql中也有类似的东西?

票数 1
EN

Stack Overflow用户

发布于 2016-05-10 19:36:24

我为此编写了过程,现在它起作用了。谢谢你们所有人。

代码语言:javascript
复制
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE newcount INTEGER;
DECLARE oldcount INTEGER;
DECLARE oldtableName char(50);
DECLARE newtableName char(50);

DECLARE curs1 CURSOR FOR SELECT TABLE_NAME,SUM(TABLE_ROWS) as count FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dest_northwind' AND 
TABLE_NAME IN(select table_name from information_schema.tables
where table_schema='dest_northwind') GROUP BY TABLE_NAME ;

DECLARE curs2 CURSOR FOR SELECT TABLE_NAME,SUM(TABLE_ROWS) as count FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'northwind' AND 
TABLE_NAME IN(select table_name from information_schema.tables
where table_schema='northwind') GROUP BY TABLE_NAME ;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN curs1;
OPEN curs2;
read_loop: LOOP
FETCH curs1 INTO newtableName,newcount;
FETCH curs2 INTO oldtableName,oldcount;
IF done THEN
LEAVE read_loop;
END IF;
SELECT newtableName,newcount,oldcount;
insert into zreult1(Tablename,Northwind,Dest_Northwind)values(oldtableName,oldcount,newcount);
END LOOP;
CLOSE curs1;
CLOSE curs2;
END
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37113427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档