如何在 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:执行query1select * from tblEmployee where name=value1

User2:执行query2Select * 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 应用程序运行时合并两个查询并执行新创建的查询的主要内容,如果未能解决你的问题,请参考以下文章

如何在运行时合并两个图像并保存在 php 中?

Power Query:如何使电源查询更新合并文件?

Firestore - 在本地合并两个查询

MSSQL - 有关插入查询如何运行的问题

如何不排序就执行UNION? (SQL)

如何在python中把两个列表的各项分别合并为列表