2016-06-10 108 views
0

我想要一個SQL SELECT查詢創建一個表,並與自動遞增的值添加一列:運行環路成sql查詢

例如:

Create table Core 
as 
SELECT w.id, w.core_name,CAST('MD_1' AS CHARACTER VARYING) AS INDEX 
from myTable; 

域索引將採取默認值'md_1'

但我要的是1根據記錄 和結果,我想有這樣的事情

自動遞增
ID|core_name|index| 
1|  xxx| MD_1 
2|  xxx| MD_2 
3|  xxx| MD_3 
+0

不相關,但:select中不需要'cast()'。使用''MD_1''就可以了 –

回答

0

這是不完全清楚你的要求,但如果你只是想有「MD_」後的行號,最簡單的解決方法是:

('md_' || row_number() over (rows unbounded preceding)) as "index" 

的原因,我不能完全肯定SQL並沒有真正將自動增量值的概念應用於記錄集。相反,我們所做的是根據當前的分組和排序順序獲取行號並將其附加到值。這是相似的,但在概念上相當不同,因爲這個概念也可以用於許多其他情況(例如運行總數)。

+0

謝謝你的回答,這是非常有幫助的,我還有一個問題,如果你可以幫助我: 我想插入到我的表中,根據字段(名稱) 爲例 名稱值 ------- | --------- | aaaa | MD_1 | aaaa | MD_2 | aaaa | MD_3 | bbbb | MD_1 | bbbb | MD_2 | bbbb | MD_3 | bbbb | MD_4 | cccc | MD_1 | cccc | MD_2 | – Hchliyah

+0

你總是可以這樣做: INSERT INTO foo(cols)SELECT ...' –