2013-04-22 25 views
0

我有2個表格。一個是生產表,另一個是每日報告表。每日報告表每天都清空。日報表是生產表的一個子集。我想用生產表中的所有新行更新每日表格。我想過使用where子句;如果表爲空,請根據時間或所有行選擇行

SELECT ftime, 
     fdate, 
     fdata, 
     fdata2 
INTO table2 
FROM table1 
WHERE ftime > table2.ftime 

我沒有太多的運氣。我是SQL新手,我只是不知道該怎麼做,並且似乎無法在網絡上找到任何有關此特定問題的信息。

這將最終進入存儲過程,當我得到它的工作。

任何提示,提示,將不勝感激。

+0

索引我忘了提生產表是一個遠程連接的服務器上,該表是巨大的200個+萬行。似乎聯接嘗試獲取整個表來執行聯接。 – user2308996 2013-04-22 21:50:29

回答

1
SELECT ftime, 
     fdate, 
     fdata, 
     fdata2 
INTO table2 
FROM table1 
WHERE ftime > (select MAX(ftime) from table2) 
    OR NOT EXISTS (select * FROM table2); 

如果table2爲空(例如,如果您剛剛完成每日清除),則table1的所有內容都將被拉入table2。
否則,它只會將表1中的新記錄與ftime中的新記錄相比晚於表2中的記錄。

確保您有table2.ftime

+0

還要確保您正在運行SQL,以便將其插入到本地表中(即在表2所在的位置運行SQL)。從鏈接的服務器提取數據效果很好;但是插入到遠程表中會將其從批處理查詢變成按行光標(RBAR)的行。 – Rawheiser 2013-04-22 22:25:25

+0

謝謝,那正是我所需要的 – user2308996 2013-04-22 22:26:41

相關問題