2010-11-20 209 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