【发布时间】:2014-07-24 14:40:22
【问题描述】:
这是我在这里的第一篇文章,我是数据库新手。我试图找到答案,但我不确定我是否理解它如何适用于我的案例。
我的访问程序会生成一个包含不同类型字段(自动编号、短文本、备忘录)的查询,然后用于创建报告。
到目前为止,它一直运行良好,但是自从数据库增长以来,我遇到了问题。
我使用ID(主键)IN() where 条件来过滤报表。我制作了一个长字符串来获取所选记录的所有 id:
WHERE ID IN (1200,1201,1203,1226,1227,1228,1229,...)
当查询中达到一定数量的字符(大约 4000 个)时,我得到的是中文字符,而不是查询结果的所有备注字段,并且只有备注字段(然后在报告中)。
查询大小有限制吗?不是32000字吗?
为什么这些字符只有在我选择太多记录时才会显示?
是否有替代 IN () 可以帮助我减少查询长度或我应该完全避免备注字段?
编辑:这就是查询(为了便于阅读而删减了一点):
SELECT ObjetsLegislatifs.IDobjet, ObjetsLegislatifs.TitreObjet, ObjetsLegislatifs.ContenuObjet
FROM ObjetsLegislatifs
WHERE IDobjet IN(1200,1201,1203,1226,1227,1228,1229,1230,1231,1232,)
GROUP BY ObjetsLegislatifs.IDobjet, ObjetsLegislatifs.TitreObjet, ObjetsLegislatifs.ContenuObjet
ORDER BY ObjetsLegislatifs.IDobjet;
基本上,IDobjet 是一个自动编号,“TitreObjet”和“ContenuObjet”是备忘录字段。 虽然 IDobjet 总是显示正确的数字,但当查询太长时,当达到某个阈值时,备注字段开始显示中文。我尝试在查询中使用文本字段,它们工作正常。
【问题讨论】:
-
嗯,这是第一次......我以前从未听说过它被称为“数据库”。但是最好使用临时表并
Joining 到它,而不是列出 4000 个In参数。 -
您可以发出多个请求,每个请求的长度不超过 4000,然后
UNION结果。 -
@RomanBK 我已经稍微编辑了你的问题。我不清楚的是:“查询结果的备注字段”是什么?您选择的数据是什么(SQL 语句的第一部分)?请add that to your question
-
坦克很多!我将使用临时表。我发现有时它无法真正处理的访问提供选项令人厌烦......
-
@JanDoggen 我编辑了这个问题,希望它可以帮助别人!谢谢你的帮助。抱歉,拖了这么久。