如果表为空,则根据时间或所有行选择行

时间:2013-04-22 21:36:45

标签: sql-server

我有2张桌子。一个是生产表,另一个是每日报告表。每日报告表每天清空。每日报告表是生产表的子集。我想用生产表中的所有新行更新每日表。我想过使用where子句;

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

我没有太多运气。我是SQL的新手,我只是不确定如何解决这个问题,而且似乎无法在网上找到任何针对此特定问题的内容。

当我开始工作时,这最终会进入存储过程。

任何提示和提示都将非常感激。

1 个答案:

答案 0 :(得分: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。
否则,它只会在table1中插入新记录,而ftime比table2中存在的更新。

确保table2.ftime上有索引