2012-11-03 101 views
0

我在C#SQL Server中编写搜索功能,我的用户可以选择多个作业组,并且此功能应该检查作业表中所有选定的组ID,如何执行SQL Server中的循环操作?这是我的表一般模式:在SQL服务器查询中执行循环操作

id int, jobname varchar, jobgroup int..... 

我用下面的查询选择我的作业(基于jobgroup):

select * from tblJobs where jobgroup='"+userGroups+"' 

这可能是真实的,只有当用户组包含一个值,但我的用户可以选择几个组ID,例如我的userGroups可以是这样的:5,7,10,20(userGroups可以包含更多的值)

我该如何在我的查询中执行循环操作,以便我可以拥有所有匹配的工作? 我应该连接几个查询的每个选择一个组ID的返回值吗?我认为有更好的方法

+1

如果你都不可能避免SQL循环,这样做。该引擎针对设置操作进行了优化,而不是循环,这可能会导致性能下降。 – Oded

回答

1

不要在SQL中使用循环 - 循环倾向于杀死SQL数据库的性能。

在这种情况下,我相信IN条款可以这样做:

SELECT col1, col2 
FROM tblJobs 
WHERE jobgroup IN ('"+userGroups+"', '"+userGroup2+"') 
+0

谢谢,我可以动态创建IN短语吗?因为我不知道我的用户请求会是什么 –

+1

@Ali_dotNet - 您可能不需要动态地这样做。看看[Table Valued Parameters](表值参数)(http://msdn.microsoft.com/en-us/library/bb510489.aspx)。 – Oded

+0

感谢Oded,但我想这段中没有'=',你为我节省了很多时间! –