我想創建一個與某些現有表相同的新表以及一些附加列。在簡單的情況下,我們將這樣做:從另一個表中創建表(Sql Server)
Select * INTO table2 from table1 where 1=0
但我也想添加一些新的列。我們能否一步完成,即不用ALTER TABLE
作爲下一步?
我想創建一個與某些現有表相同的新表以及一些附加列。在簡單的情況下,我們將這樣做:從另一個表中創建表(Sql Server)
Select * INTO table2 from table1 where 1=0
但我也想添加一些新的列。我們能否一步完成,即不用ALTER TABLE
作爲下一步?
是的,但爲了指定數據類型,您應該將null作爲所需的類型。
SELECT *
, CAST(NULL as NVARCHAR(100)) as NewColumn1
, CAST(NULL as INT) as NewColumn2
INTO B
FROM A
WHERE 1=0
列約束/默認將需要通過更新TABLE語句單獨添加,但他們可能沒有必要爲你正在嘗試做的。
列類型肯定會是。
空將自動轉換爲整數,因此如果您最終將填充其他類型的數據,則需要將其轉換爲整數。我很難學會這一點! – HLGEM
您能明確列出SELECT
語句中的新列嗎?他們需要填充還是隻有空的領域?像
Select *, cast(NULL as type) as NewColumn1, cast(NULL as type) as NewColumn2... INTO table2 from table1 where 1=0
東西雖然你可能要列出所有從原來的表,而不是*
單獨列了。
可能希望'作爲ColumnName'投射(null作爲類型)來控制列的類型。 –
好趕上!更新... –
你可以做以下中:
SELECT *,
'' AS Col2, -- Here you can specify you new columns
'' AS Col3 ---------------------------------------
INTO table2
FROM table1
是的,你可以做到這一點
選擇*, 'ABC' 作爲城市變成dbo.newtable從dbo.oldtable,其中1 = 0
如果你想添加更多的columns
添加那些在select
聲明: 如:
select
t.*,
12 as ID,
'ABCD' as Name
INTO table2
from table1 as t
where 1 = 0
creation
之後,請按照預期的方式執行execute sp_columns 'table2'
以查看錶格的定義。
這裏Name
列將是類型varchar
的長度4
。
新列值是否來自舊錶格列? – DhruvJoshi
請注意,如果這是一種可以多次運行的過程,那麼創建新表格並不是一種好方法。只選擇一次作品。也沒有索引/ PK/FKS不會創建新表的新表。按照這種方式創建它時按照表格。標識字段將轉到新表。所以你可能需要明確地創建這些東西,如果你需要它們。 – HLGEM