这种情况下的SQL查询?
问题描述:
有一个雇员表有employee_id和employee_name
我想插入“詹姆斯”到这个表。
如果Employee表中已经有一个“詹姆斯”的记录,我想退回他的雇员标识
如果表中有一个以上的“詹姆斯”的记录(复制)什么也不做,跳过
如果没有“詹姆斯”,我想要插入“詹姆斯”和新的employee_id将返回这种情况下的SQL查询?
伙计们如何为此编写查询。
更新:我的另一个question的答案解决了这个问题。感谢您的指导,
答
您需要编写一个存储过程来执行此操作。你对他们熟悉吗?或者,您可以从服务器多次查询数据库。
答
如果允许@@行数函数中使用:
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
感谢您的快速回复。实际上,整个事情都是在一个存储过程中进行的。我可以做一些“如果”的事情。但我想可能有一个单一的SQL语句来做重复检查。 – vijay 2010-11-20 07:58:14
我会继续与ifs。我无法想出一个按您希望的方式行事的单一查询。可能是 – 2010-11-20 08:26:24