应用程序中的某些地方有一个自动生成的查询,例如
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/