sql - INTO 关键字的错误信息
问题描述
有谁知道为什么 INTO 关键字在下面的第一种方法中起作用,而在第二种方法中不起作用?
我从该视频的前 5 分钟获得了关于创建临时表的两种方法:https ://www.youtube.com/watch?v=3ZtYrELHP8M
方法一
SELECT
CAST (date AS DATE) AS #DateWk
INTO
#DateWk
FROM
AggregatedSalesHistory
WHERE
date >= '1-2-2014'
SELECT * FROM #DateWk
当我尝试方法 2 时,我收到以下错误消息:
关键字“INTO”附近的语法不正确。
这是方法2的代码:
CREATE TABLE #DateWeek
(
Title VARCHAR(MAX),
ReleaseDate DATETIME
)
INSERT INTO #DateWk
SELECT
CAST (date AS DATE) AS #DateWk,
INTO #DateWk
FROM AggregatedSalesHistory
WHERE date >= '1-2-2014'
SELECT * FROM #DateWk
解决方案
如果表已经存在,则不SELECT .... INTO ....
能再使用 - 您需要使用:
INSERT INTO #DateWk
SELECT CAST (date AS DATE)
FROM AggregatedSalesHistory
WHERE date >= '1-2-2014'
您已经INSERT INTO
在开头指定了 - 不要在INTO ..
之后添加 aSELECT
然后它应该可以正常工作。
所以如果你这样做
SELECT (list of columns)
INTO SomeTable
FROM ....
WHERE.....
那么这SELECT
将自动创建表 - 但如果已经存在SomeTable
此代码将失败- 在这种情况下使用:SomeTable
INSERT INTO SomeTable(list-of-columns)
SELECT (list of columns)
FROM ....
WHERE.....
更新:通常认为始终明确指定要插入的列是一种好习惯 - 以避免出现像现在这样的问题。
因此,将您的声明更改为:
INSERT INTO #DateW (ReleaseDate)
SELECT CAST (date AS DATE)
FROM AggregatedSalesHistory
WHERE date >= '1-2-2014'
如果您没有在语句中的表名之后指定列列表,则必须为表的所有INSERT
列提供值- 按照它们在表中出现的顺序。
推荐阅读
- directory - 删除包含所有对象版本的 Google Storage 文件夹
- machine-learning - 在 Keras 中,我什么时候应该使用 input_shape 而不是 input_dim?
- excel - 文件夹选择器 Excel VBA 和粘贴路径到单元格
- java - 如何打印斐波那契数,多线程?
- javascript - rails vue.js 深度嵌套(属性的属性)
- sql - 在本机查询中映射 JPA 中的值
- r - VeganCovEllipse 函数没有给我与 Ordiellipse 函数相同的椭圆
- javascript - 求一组对象的平均值
- c# - 将 JSON 对象 A 转换为 JSON B 对象,其中 B 是 A 的严格子集。两者都受两个 json 模式控制。在 .net 核心中
- php - 如何使用 JQuery Repeater 和 php 显示数据库中的数据