Mysql 选择“插入到SQL Server查询副本中/插入到SQL Server查询副本中”
很抱歉问这个问题,但我是SQL的初学者,我的同事正在构建一个视图,我需要它作为报表的数据源,但是由于该视图基于其他几个视图,执行查询需要45分钟。这是很长的路。因此,我从该视图创建了一个表,初始执行时间是相同的,但一旦到位,它将以秒为单位执行 在Microsoft SQL Server 2014中,我使用了以下查询:Mysql 选择“插入到SQL Server查询副本中/插入到SQL Server查询副本中”,mysql,sql-server,sql-insert,select-into,Mysql,Sql Server,Sql Insert,Select Into,很抱歉问这个问题,但我是SQL的初学者,我的同事正在构建一个视图,我需要它作为报表的数据源,但是由于该视图基于其他几个视图,执行查询需要45分钟。这是很长的路。因此,我从该视图创建了一个表,初始执行时间是相同的,但一旦到位,它将以秒为单位执行 在Microsoft SQL Server 2014中,我使用了以下查询: select * into [dbo].[MAT_v_demnew_daily_am_all_data] from [dbo].[v_demnew_daily_am] 这很好,
select *
into [dbo].[MAT_v_demnew_daily_am_all_data]
from [dbo].[v_demnew_daily_am]
这很好,但是因为视图每天都更新,所以我还需要每天刷新表。当我现在执行上述查询时,我得到一条消息,即表已经存在
这就是我在本例中尝试使用“插入”的原因:
insert into [dbo].[MAT_v_demnew_daily_am_all_data]
select *
from [dbo].[v_demnew_daily_am]
这里我的问题是,它不仅插入了额外的数据,而且还插入了已经存在的数据,因此最终我得到了重复的数据
作为一种解决方法,我现在手动删除[dbo].MAT_v_demnew_daily_am_all_data]表,然后执行select*into查询
现在我正在寻找一个更简单的解决方案,是否可以通过查询删除表,并在同一查询中通过选择*创建一个新表,或者是否可以只将视图中的新数据插入表中,以避免重复
此外,是否有可能每天自动执行此类SQL语句,可能是通过.bat文件和windows任务调度器执行
我知道所有问题的根源都是观点,我们应该改进观点,但首先要寻找短期解决方案
非常感谢
Mathias试试这个:
如果对象ID'dbo.MAT\v\U demnew\U daily\U am\U all\U data','U'不为空
删除表dbo.MAT_v_demnew_daily_am_all_数据
选择dbo.MAT_v_demnew_daily_am_所有来自dbo.v_demnew_daily_am的数据
此查询每天都可以重复使用
可以创建一个包含此查询的存储过程
然后您只需要执行存储过程
更新
在创建存储过程之前,请检查您是否具有该权限
然后尝试:
创建后:
EXEC [procedure_name];
嘿,万根,这奏效了。非常感谢!在哪里可以找到关于如何创建这个存储过程的信息?
EXEC [procedure_name];