我需要一些SQL查询的帮助。该查询旨在从表中返回75个随机记录。这是查询:
SELECT TOP 75 a.Number, a.Location, a.Manufacturer
FROM a
WHERE (((a.Location) = 'Columbus'))
ORDER BY Rnd(Int(Now()*Number)-Now()*Number);
如果我在WHERE
子句中使用不同的城市名称,则此查询可以正常工作。例如,如果我将WHERE
子句更改为WHERE (((a.Location) = 'Toledo'))
,则查询可以正常工作。但是,如果城市名称为“Columbus”,则会出现数据类型不匹配错误。
答案 0 :(得分:7)
您需要验证Number
列a.Location = 'Columbus'
中的值...我怀疑您在其中一个数字列中有非数字值,这会导致类型不匹配错误。
您可以使用它来缩小范围:
SELECT *
FROM a
WHERE NOT ISNUMERIC(a.Number) and a.Location = 'Columbus'
或者更好的是,排除位置以找到任何可能的错误值:
SELECT *
FROM a
WHERE NOT ISNUMERIC(a.Number)
答案 1 :(得分:0)
运行此查询:
SELECT a.Number, a.Location, a.Manufacturer
FROM a
WHERE (((a.Location) = 'Columbus'))
查询运行后,按a.Number排序;先上升然后下降。我的赌注是其中一个记录在该字段中有空值,或者一个值不是数字,并且当您对其进行排序时,该记录将上升到查询的顶部。当您尝试计算随机数时,此字段中任何非数字的值都将导致数据类型不匹配。