Mysql 选择“插入到SQL Server查询副本中/插入到SQL Server查询副本中”

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] 这很好,

很抱歉问这个问题,但我是SQL的初学者,我的同事正在构建一个视图,我需要它作为报表的数据源,但是由于该视图基于其他几个视图,执行查询需要45分钟。这是很长的路。因此,我从该视图创建了一个表,初始执行时间是相同的,但一旦到位,它将以秒为单位执行

在Microsoft SQL Server 2014中,我使用了以下查询:

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];