2016-01-21 80 views
3

我想在同一个查询中多次引用一个临时表。由于使用临时表的问题,我不能这样做:重复临时表MySQL

http://dev.mysql.com/doc/refman/5.7/en/temporary-table-problems.html

因此,要解决这个问题,我创建临时表的副本:

CREATE TEMPORARY TABLE IF NOT EXISTS earnings_temp_one AS (SELECT * FROM earnings WHERE earning_account_id = ?); 
CREATE TEMPORARY TABLE IF NOT EXISTS earnings_temp_two AS (SELECT * FROM earnings WHERE earning_account_id = ?); 
CREATE TEMPORARY TABLE IF NOT EXISTS earnings_temp_three AS (SELECT * FROM earnings WHERE earning_account_id = ?); 

但是这需要我查询了大量的表盈利3倍,这在一定程度上击败了目的。

有没有办法让我用不同的名字复制临时表?

然后,我可以在庞大的表上运行一次查询。

或者也许有临时表问题的修复,不需要我创建重复?

回答

3

好吧,我解决了这个问题:

CREATE TEMPORARY TABLE IF NOT EXISTS earnings_temp_one AS (SELECT * FROM earnings WHERE earning_account_id = ?); 
CREATE TEMPORARY TABLE IF NOT EXISTS earnings_temp_two AS (SELECT * FROM earnings_temp_one); 
CREATE TEMPORARY TABLE IF NOT EXISTS earnings_temp_three AS (SELECT * FROM earnings_temp_one); 
+0

随意接受你自己的答案。 –