如何在 Web 应用程序运行时合并两个查询并执行新创建的查询
Posted
技术标签:
【中文标题】如何在 Web 应用程序运行时合并两个查询并执行新创建的查询【英文标题】:How to merge two query in web Application runtime and execute new created query 【发布时间】:2022-01-14 14:34:26 【问题描述】:我有一个网络应用程序。我想合并两个查询,然后将新查询发送到数据库运行。我想知道有没有可能? 假设 user1 执行 query1 并且 user2 执行 query2 .应用程序是否可以在运行时合并 query1 和 query2 并在数据库上执行创建的新查询?
User1:执行query1:select * from tblEmployee where name=value1
User2:执行query2:Select * from tblEmployee where name=value2
我想创建一个这样的新查询:
新查询:select * from tblEmployee where name IN (value1, value2)
鉴于在 Web 应用程序上为每个用户创建了不同的会话,是否可以合并在应用程序上执行的两个用户查询?可以将数组定义为缓冲区并在其中存储查询吗?如果可以,请问如何?
【问题讨论】:
说真的,你为什么要这样做?为什么要尝试从 2 个单独的会话中构建查询?考虑到它们都将被异步请求,您将如何编组它们?似乎很多工作都没有收获? 我同意@DaleK 我真的不明白这会给您带来什么,并且似乎是解决您的问题的一个非常复杂的解决方案。说到这里,你要解决的实际问题是什么 @Dalek , kevin Dear,我正在尝试开发一种新技术,用于在公共云中外包数据,同时也能够确保数据安全。因此,我想通过组合假值来防止数据泄漏。这个问题很长。现在在这个问题中,我只想知道实际上是否可以将两个用户的查询值相互合并?谢谢。 【参考方案1】:不确定是否有可能,因为用户 1 和用户 2 不仅会在不同的会话中执行查询,而且还会在不同的时间(即使以毫秒为单位)执行查询。如果您知道这两个请求的接近程度,您可以创建一个临时表 (TmpTable) 并将每个查询的结果附加到它。
INSERT INTO TmpTable select * from tblEmployee where name=value1
INSERT INTO TmpTable select * from tblEmployee where name=value2
然后延迟一两秒并运行一个简单的
SELECT * FROM TmpTable
每个用户都会得到相同的结果。
为了更复杂,您可以在单独的表中设置一些标志,以在运行 SELECT 之前检查两个查询是否已执行。
【讨论】:
global.asax中没有办法吗?例如,不能将数组定义为 application_Start 方法中的缓冲区或其他可以做到这一点的东西吗?谢谢@Anguswalker。以上是关于如何在 Web 应用程序运行时合并两个查询并执行新创建的查询的主要内容,如果未能解决你的问题,请参考以下文章