我有一个让我困惑的问题。当我对访问数据库运行以下查询时:
SELECT *
FROM PreferredSpacer INNER JOIN SpacerThickness ON PreferredSpacer.SpacerTypeID = SpacerThickness.SpacerTypeID
ORDER BY PreferredSpacer.UnitTypeID DESC
(UnitTypeID字段是文本类型)
结果并没有按正常人的预期排序。它们与UnitTypeID字段相关(在以'C'和'M'开头的条目之间有以'W'开头的条目)。如果我删除了连接并且只是尝试在PreferredSpacer表(包含UnitTypeID字段)中订购记录,我得到了我的预期结果,所以我必须假设连接与它有关。
然而,与此同时,我真的无法想象一个普遍存在的工具,因为访问可能会有一个相当基本的查询这样一个明显的问题。如果我做错了 - 但是 - 我无法看到它可能是什么。非常感谢任何帮助。感谢。
答案 0 :(得分:2)
我明白了。我们的客户用来生成相关访问数据库的工具错误地将SQL中的varchar字段转换为访问中的备注字段(而不是文本,就像我们的工具那样),并且备注字段没有正确排序。对我来说似乎很奇怪Access会默默地使用它,而不是试图表明备忘录上的排序不能按预期工作,但这就是生活。
感谢大家的回复。
答案 1 :(得分:1)
是COTR还是CzeroTR?否则,它看起来按要求降序排序。 YESNO?
答案 2 :(得分:0)
SpacerThickness是否有UnitTypeID列?如果是这样,select中的“*”可能表示它在PreferredSpacer.UnitTypeID上排序,但选择了SpacerThickness.UnitTypeID。尝试直接选择PreferredSpacer.UnitTypeID。
答案 3 :(得分:0)
不幸的是,UnitTypeID字段仅存在于PreferredSpacer表中。
答案 4 :(得分:0)
我没有看到该查询可能出错的任何内容。
联合表的大小是否可能大于访问者愿意处理的?
答案 5 :(得分:0)
我尝试重写它,如你所说:[编辑:这是对已被删除的帖子的回复,但内容仍然有效]
SELECT PreferredSpacer.UnitTypeID
FROM PreferredSpacer, SpacerThickness
WHERE PreferredSpacer.SpacerTypeID = SpacerThickness.SpacerTypeID
ORDER BY PreferredSpacer.UnitTypeID DESC
我仍然得到相同的结果。如果可能对任何人有帮助,这是一些C& P的结果。
CPATA
CPATA
CFRSA
CFRSA
CFRSA
CFRSA
CFRSA
CFDOT
CFDOT
CFDOT
CFDOT
CFDOT
CFDOAVSL
CFDOAVSL
CFDOAVSL
CFDOAVSL
CFDOAVSL
CFDOA
CFDOA
CFDOA
CFDOA
CFDOA
CFDIAVSL
CFDIAVSL
CFDIAVSL
CFDIAVSL
CFDIAVSL
CFDIA
CFDIA
CFDIA
CFDIA
CFDIA
CFDAT
CFDAT
CFDAT
CFDAT
CFDAT
CBPATA
CBPATA
CBPATA
CBPATA
CBPATA
CBFRSA
CBFRSA
CBFRSA
CBFRSA
CBFRSA
CAPURE
CAPURE
CAPURE
CAPURE
CAPURE
CADGU
CADGU
CADGU
CADGU
CADGU
CADGS
CADGS
CADGS
CADGS
CADGS
COTR
COTR
COTR
COTR
如您所见,结果似乎没有遵循任何整体有意义的顺序。
答案 6 :(得分:0)
To Remou:它在O而不是零,但是即使它在整个结果集中有更多的条目(我只是粘贴了它的一部分来说明,整个事情是关于1,000行)。
虚拟:Sql具有varchar类型,这将用于此类数据。然而,Acccess只有文本数据类型来覆盖长字符串和短字符串。此命令也可以工作如果我只在PreferredSpacer表(它是包含UnitTypeID字段的表)上执行它,那么只有在我进行连接时它才会崩溃。
答案 7 :(得分:-1)