在MS Access 2000中,我有一个名为[Stack Trace]的表,我应该从中随机拉出400条记录,其中包含一个文本列。 我查看了here中的一个示例,并在表中添加了一个自动编号字段,并编写了如下查询:
假设[Appraisal Name]是所需的字段,ID是自动编号的主键,查找随机400条记录的查询应该是什么,其中一个文本字段具有不同的值?
第一次查询没有区别[评估名称]。
SELECT Top 400 *
FROM (SELECT *,
Rnd(ID) AS RandomValue
FROM [Street Data])
ORDER BY RandomValue ASC
我知道我可以在带有Rank操作的sql server中轻松实现。我没有看到任何有用的链接来查找varchar / text字段的排名。我试图使用以下查询找到排名。它没有成功。
SELECT
ID,
[Appraiser Name],
(
SELECT COUNT(*)
FROM [Street Data] WHERE
[Appraiser Name] <= T.[Appraiser Name]
) AS Rank
FROM [Street Data] AS T
ORDER BY ID, [Appraiser Name]
感谢任何帮助。
答案 0 :(得分:0)
我解决了一些方法。但是,如果有任何简单的方法,我欢迎。我创建了三个查询。第一个用于查找评估者名称的等级,第二个用于查找评估者名称的等级,第三个用于查找最终查询。我尝试使用rank = 1的查询中的第一个,它给了我加入不支持错误。那很不好。当我创建另一个rank = 1的查询然后在最后一个查询中使用它时,它就可以了。
<强> StreetData_Appraiser 强>
SELECT ID, [Appraiser Name], (
SELECT COUNT([Appraiser Name])
FROM [Street Data]
WHERE [Appraiser Name] = T.[Appraiser Name]
AND ID <= T.ID
) AS Rank
FROM [Street Data] AS T
ORDER BY ID, [Appraiser Name]
StreetData_Distinct_Appraiser (查询以屏蔽第一个查询并仅显示不同的记录并避免无效的连接错误)
SELECT * FROM StreetData_Appraiser WHERE Rank = 1
最终查询
SELECT TOP 400 *
FROM (SELECT ST.*,
Rnd(ST.ID) AS RandomValue
FROM [Street Data] AS ST
INNER JOIN [StreetData_Distinct_Appraiser] AS SA ON SA.ID=ST.ID) AS STRecs
ORDER BY RandomValue