回答

收藏

将数据库结果筛选为查找列中每个值的前n条记录

技术问答 技术问答 215 人阅读 | 0 人回复 | 2023-09-12

假设我的数据库中有两个表。
8 z# f( B  F! F( P, UTABLE:Categories
3 ~3 n  z8 v8 W# R8 F& l5 d& pID|CategoryName
6 Q- T+ Q* |$ Q! K01|CategoryA% E0 T# N# @# h% ~. F# ^
02|CategoryB
. U9 x$ w& p: j) j7 X. L2 ^; z03|CategoryC
! ?7 _: d9 L; ^1 M还有一个引用类别的表,该表还具有存储一些随机数的列。4 s- b' W# T* v6 {" S6 c
TABLE:CategoriesAndNumbers
4 G% c, ]* T* r2 TCategoryType|Number
" f# K  i6 H2 U3 g5 D. o   CategoryA|24
1 K0 Q/ L6 |# l4 o# a) O! V   CategoryA|22
1 `+ @) X( b' Z6 p4 S   CategoryC|105
3 _% \$ ~$ c" D   .....(20,000 records)8 Y4 N0 L* N3 {( n4 k
   CategoryB|3
, P% T3 C* U+ n3 P# W% p5 {) M8 `现在,我该如何过滤掉这些数据?因此,我想知道每个类别中最小的3个数字是什么,然后删除其余的数字。最终结果将是这样的:
' F, d4 ?4 o. h) y3 ?9 x: V, l6 f: zTABLE:CategoriesAndNumbers
6 T% ?) w8 t* R( TCategoryType|Number! B3 I- a7 w6 n
   CategoryA|2# q6 F+ e& N* x# k5 _  j/ y
   CategoryA|5- K4 G3 `8 |9 U5 w) y
   CategoryA|183 l% l6 [; }( }6 e. o
   CategoryB|3
7 P7 a7 s  f! O   CategoryB|5005 L4 i- z- n4 i- p+ z8 N
   CategoryB|1601
+ Z/ F. v; u8 W0 n  o& h   CategoryC|18 i: U4 i6 R) s: P- X+ v- O
   CategoryC|4
2 E2 S, y1 m7 r- e7 h8 h   CategoryC|62
5 o5 g: B  a6 w* F/ E0 Y现在,我可以获得所有类别中最小的数字,但是我希望每个类别都可以单独进行比较。0 L5 c  ~3 s5 I+ N6 n8 G
编辑:我正在使用Access和到目前为止这是我的代码6 \: {. `- B8 I: D' w
SELECT TOP 10 cdt1.sourceCounty, cdt1.destCounty, cdt1.distMiles
( L; N5 h: E) M& \8 R, W3 H1 H4 {FROM countyDistanceTable as cdt1, countyTable
' W4 E. E) [  n1 D. [. i, LWHERE cdt1.sourceCounty = countyTable.countyID* f& _- K: o9 m; `3 G
ORDER BY cdt1.sourceCounty, cdt1.distMiles, cdt1.destCounty1 B* ~1 x$ B* G0 [/ I
EDIT2:感谢Remou,这将是可以解决我问题的有效查询。 谢谢!
- }5 u. C! e7 v' E9 L* _1 fDELETE
& [" h0 f0 ^0 EFROM CategoriesAndNumbers a1 v* j2 L6 H4 Z. @4 d2 u( m
WHERE a.Number NOT IN (# g) P& `, j% w, u
    SELECT Top 3 [Number]
, Z' T, P1 _$ M    FROM CategoriesAndNumbers b $ }+ w0 G) H+ ^
    WHERE b.CategoryType=a.CategoryType
( x, \/ g, V" t    ORDER BY [Number])3 U6 Y4 R7 _: L6 I' E
                9 F8 U5 g8 v# n) `0 l* c
解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则