好吧,這裏有一個快速的SQL問題(使用sql-server-2008)。SQL選擇或插入返回ID
我有一個映射表names
有以下的列
ID
DisplayName
我想要做的是首先 SELECT [ID] FROM [names] WHERE [DisplayName] = 'chuck';
但是,如果名稱爲「夾頭」不中不存在數據庫,我想創建它,並返回自動遞增的ID
。
我想知道SQL是否有一些簡單的方法構建,或者如果我必須走長路線?
長的路線是這樣的
SELECT COUNT(ID) AS count, ID FROM names WHERE DisplayName='chuck'
IF(count > 0)
SELECT ID as ReturnID;
ELSE
BEGIN
INSERT INTO names(DisplayName) values('chuck');
SELECT scope_identity() as ReturnID;
END
我沒有測試這一句,但我相信在很長的路將是類似的東西。如果沒有內置的方式,我會很感激,如果有人可以簡單地糾正該聲明(因爲我確信它不完全正確)。
如果只支持200 * +,請使用[MERGE語法](http://technet.microsoft.com/en-us/library/bb510625.aspx) – 2012-02-26 22:15:03
您能否提供示例?我試圖學習使用sql的更高級的方法。 – 2012-02-26 22:19:21
@ kelton52:OMG Ponies文章的末尾有一些例子。你需要向下滾動一下。 – 2012-02-26 22:59:19