我正在使用OleDB连接到FoxPro DBF数据库。我需要使用column = key1或key2或key3 ...... key2000查询表中的所有项目。
FoxPro显然不喜欢长期查询....
我试过了两个:
where (col like "key1") or (col like "key2") or ..... (col like "key2000")
和
where col in ("key1", "key2", "key3", "key4".... "key2000")
第一个解决方案因“查询过于复杂”而失败。第二个键失败,因为范围内的元素太多(显然最大值为24)。这看起来很荒谬......
有没有办法构建我的查询而不需要多次读取?
感谢。
答案 0 :(得分:4)
您需要将您的条件推送到临时表或条件表并从中查询
Create Table Criteria (
UserSessionId ...
, KeyValue ....
)
Select ...
From MyMainTable
Join Criteria
On Criteria.KeyValue = MyMainTable.col
And Criteria.UserSessionId = ...
答案 1 :(得分:0)
两种可能性:
1)使用多个IN子句,每个
中包含24个值WHERE col IN (,,,,) OR col IN (,,,,) OR col IN (,,, )
2)将2000个值放在逗号分隔的字符串中并使用
SELECT * FROM Table WHERE ?string LIKE '%'+col+'%'