c# - 查询太复杂。如何修改查询?

标签 c# sql ms-access

应用程序中的某些地方有一个自动生成的查询,例如

SELECT DISTINCT `Name`,`Number` 
FROM `Table` 
WHERE (`ID`=@NAZ_ID_0)   
   OR (`ID`=@NAZ_ID_1) 
   OR (`ID`=@NAZ_ID_2)
   OR (`ID`=@NAZ_ID_3) 
   ... 
   OR (`ID`=@NAZ_ID_690)

在执行此查询时,ms access 抛出异常“查询太复杂”。显然是因为 OR 的数量在 ms Access 中被限制为 99。 如何更改此查询并避免使用此 OR ... OR ... OR 结构?

最佳答案

如果您可以自己影响查询的创建,您可以简单地使用

    SELECT DISTINCT `Name`,`Number` FROM `Table` WHERE `ID` IN (@NAZ_ID_0,@NAZ_ID_1,etc)

如果您无法控制查询的创建,但可以在使用前对其进行更改,则可以尝试将 or-s 替换为 in-variant。 最后,如果 IN() 也太复杂,您可以考虑创建一个临时表,用变量填充它并在原始查询中使用子查询。

关于c# - 查询太复杂。如何修改查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11135396/

相关文章:

c# - SimpleInjector 可以在运行时为泛型类型注册一个初始值设定项吗?

c# - 创建要在动态对象上运行的方法列表

mysql - 如何获取每组mysql查询中第n个最高的条目

c# - 将 .Net Membership Provider 与 Entity Framework 4.3 迁移结合使用

mysql - 如何查询空表以检查是否为空?

sql - Xcode 4 和核心数据 : How to enable SQL Debugging

java - 如何使用 Java (NetBeans) 编辑 MS Access 数据库

sql - Access 将带小数点逗号的数字插入 Postgresql

ms-access - Sharepoint 链接表上的索引

c# - 如何在 asp.net core 中使用 Fetch api 将数据传递给 Controller