Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在用户定义函数中传递实体的子数据_Sql_Sql Server - Fatal编程技术网

Sql 在用户定义函数中传递实体的子数据

Sql 在用户定义函数中传递实体的子数据,sql,sql-server,Sql,Sql Server,我在两个表之间有一对多的关系,比如说User1和OrdersN,为了简单起见,实际上有些不同 现在,我在一个用户定义的函数中传递每个记录的ID,该函数通过一个子查询Orders表加载当前用户的所有子实体,并根据某些条件返回0或1,以筛选出结果集中的用户。现在,当它工作时,这个子查询效率很低,而且需要花费很长时间。是否可以以某种方式连接两个表,并在函数中传递子数据,而无需再次加载所有数据 差不多 SELECT * from Users AS u1 WHERE IsMatch(u1.Orders)

我在两个表之间有一对多的关系,比如说User1和OrdersN,为了简单起见,实际上有些不同

现在,我在一个用户定义的函数中传递每个记录的ID,该函数通过一个子查询Orders表加载当前用户的所有子实体,并根据某些条件返回0或1,以筛选出结果集中的用户。现在,当它工作时,这个子查询效率很低,而且需要花费很长时间。是否可以以某种方式连接两个表,并在函数中传递子数据,而无需再次加载所有数据

差不多

SELECT * from Users AS u1
WHERE IsMatch(u1.Orders) = 1 // this should pass in say the 5 orders the user has
是的,无效,看起来我可以用C写,但我正在SQL中寻找类似的东西。目前,这是我传入用户ID的地方,IsMatch函数对Orders表进行子查询,以加载数据,供当前用户检查它们的某些条件


总而言之:如何通过另一个select查询在用户定义函数中传递实体的子数据?

我们需要更多详细信息。IsMatch的代码是什么?此外,标量函数对性能的影响也是众所周知的。内联表值函数会更好。然后,为了获得每一行的结果,您需要使用APPLY.so将一个表或一组行传递给一个函数?。。我不确定这是一个选择。。但是,您可以将xml传递给函数。。就性能而言,您可能只想跳过该函数,并将您的逻辑放在进程中。向该函数传递命令最终将执行子查询。因此,这意味着它不会使性能更好。你还想回答这个问题吗?如果是,请看这里: