这种情况的SQL查询?

时间:2010-11-20 07:52:46

标签: sql sql-server-2008

有一个Employee表,其中包含employee_id和employee_name

我想在这张桌子上插入“詹姆斯” 如果Employee表已经有一个“james”记录,我希望他的employee_id被返回
如果表中有多个“james”记录(重复),则不执行任何操作并跳过
如果没有“james”,我想插入“james”并返回新的employee_id

伙计们如何为此编写查询。

更新:我question 的另一个人的答案解决了这个问题。谢谢大家的指导,

3 个答案:

答案 0 :(得分:0)

您需要编写存储过程来执行此操作。你对他们熟悉吗?或者,您可以从服务器多次查询数据库。

答案 1 :(得分:0)

我认为MERGE声明正是您要找的。

答案 2 :(得分:0)

如果允许使用@@ Rowcount函数:

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