在MICROSOFT SQL SERVER中有以下表格:
CREATE TABLE [T1]
(
[ID] int IDENTITY (1, 1) NOT NULL,
[col1] int NOT NULL,
[col2] int NOT NULL,
[col3] int NULL,
[col4] datetime NOT NULL DEFAULT (getdate()),
[col5] datetime NOT NULL DEFAULT (getdate())
)
我想编写一个insert语句,从另一个表中选择2列,并将所有其他列插入为NULL或default。 这是我到目前为止所尝试的(但它不起作用):
INSERT INTO [T1] ([col1],[col2], [COL3])
SELECT [1column],[2column],NULL
FROM [T2]
当我右键单击T1表并选择打开表时,该表只有2列,即使在对象资源管理器的“文件夹”列中也有所有列
我想要实现的是在T1中:在Col1和COL2中SELECT的结果和COL3中的NULL以及COL4和COL5中的默认值!
答案 0 :(得分:2)
INSERT INTO [T1] ([col1], [col2], [COL3])
SELECT [1column],[2column],NULL
FROM [T2]
这应该可以正常工作,只需检查:
INSERT
INTO [T1] ([col1], [col2], [col3])
SELECT 1, 2, NULL
SELECT *
FROM [T1]
id col1 col2 col3 col4 col5
--- --- --- --- --- ---
1 1 2 NULL 2009-04-22 15:46:47.090 2009-04-22 15:46:47.090
您收到的确切错误是什么?
答案 1 :(得分:1)
表错误,查询错误或权限错误。
右键单击SSMS中的表名,然后单击“刷新”。你看到5列吗?
SELECT * FROM T1
会给你所拥有的东西。
当您右键单击打开表格时,单击工具栏上的[SQL]按钮,您看到了吗? SELECT * FROM T1?
您对其他列没有SELECT
权限,但拥有INSERT
(不太可能),因此MetaData可见性阻止SELECT *
工作。
答案 2 :(得分:1)
当您选择打开表格并且您已经有一个窗口打开之前的表格时,它将显示该窗口而不是打开另一个窗口。你看到的是表格只有两列时的旧结果。
关闭该窗口并再次打开该表以查看该表的当前状态。