2010-11-20 206 views
0

有一個僱員表有employee_id和employee_name

我想插入「詹姆斯」到這個表。
如果Employee表中已經有一個「詹姆斯」的記錄,我想退回他的僱員標識
如果表中有一個以上的「詹姆斯」的記錄(複製)什麼也不做,跳過
如果沒有「詹姆斯」,我想要插入「詹姆斯」和新的employee_id將返回這種情況下的SQL查詢?

夥計們如何爲此編寫查詢。

更新:我的另一個question的答案解決了這個問題。感謝您的指導,

回答

0

您需要編寫一個存儲過程來執行此操作。你對他們熟悉嗎?或者,您可以從服務器多次查詢數據庫。

+0

感謝您的快速回復。實際上,整個事情都是在一個存儲過程中進行的。我可以做一些「如果」的事情。但我想可能有一個單一的SQL語句來做重複檢查。 – vijay 2010-11-20 07:58:14

+0

我會繼續與ifs。我無法想出一個按您希望的方式行事的單一查詢。可能是 – 2010-11-20 08:26:24

0

我認爲MERGE聲明是你正在尋找。

+0

,但是怎麼樣?爲什麼不提供處理該問題的答案? – pdwalker 2010-11-20 10:27:29

+1

合併是一個很好的選擇 - 但OP有一些特定的要求,迫使問題的程序。一旦在這個過程中,合併並不真正購買更多的傳統外觀,如果其他類型的邏輯。 – Randy 2010-11-20 13:47:17

0

如果允許@@行數函數中使用:

 
DECLARE @EmployeeId int 

SELECT TOP 2 @EmployeeId = employee_id 
FROM @Employee 
WHERE employee_name = 'james' 

IF @@Rowcount > 1 
BEGIN 
    PRINT 'Many matching rows found' 
    RETURN; 
END 

IF @EmployeeId IS NULL 
    -- INSERT ... 
ELSE 
    -- RETURN @EmployeeId 
+0

伊萬,你的意思是在測試中有「不是空」嗎?如果該值不爲空,那麼select語句找到一些數據,對不對? – 2010-11-20 13:44:00

+0

謝謝!我修復了它。 – 2010-11-21 13:48:56