2016-05-09 7 views
1

私は2つのデータベースoldnewを持っています。私は両方のデータベースからレコードを数え、そのテーブル名で新しい一時テーブルに挿入したいと思います。2つのデータベースからデータをフェッチして、SQLを使用して一時テーブルに挿入する方法は?

私は、一時テーブルを作成:

CREATE TEMPORARY TABLE tempemp (tablename varchar(50),northwindcount int(11),dest_northwindcount int(11)); 

をして、レコードカウント:私は一時テーブルに挿入するにはどうすればよい

select (select count(*) from northwind.orders) as northwind_cnt, (select count(*) from dest_northwind.orders) as dest_northwind_cnt; 

を?

+0

insert文を使用していますか?多分あなたが何かを試したことを私たちに示してください! – zoubida13

+0

'INSERT'文を使用してください:http://dev.mysql.com/doc/refman/5.7/en/insert.html –

+0

' INSERT INTO tablename SELECT ... FROM ... ' – vaso123

答えて

1

のMySQLについて知らんが、MSのSQLServer T-SQLで、あなたはこのような何かしたい:私の構文は少しオフのかもしれませんが、一般的な考え方は、INSERT文を持つことができるということです

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 

をVALUES句の代わりにSELECT句が使用されます。たぶんMySqlに似た何か?

0

私はこれのための手順を書いて、今これが動作しています。 ありがとうございます。

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 
関連する問題