回答

收藏

查找符合特定条件的记录组

技术问答 技术问答 336 人阅读 | 0 人回复 | 2023-09-14

我有以下数据:
- |/ N& J" N* n1 |6 N3 y' n' zID --- ParentID --- DataValue  6 S$ |7 L! K2 \; z  s) L% h: I  C8 c
1  ---    1     ---    A  + E9 U* `' ?! {( q  p( ^7 W- l
2  ---    1     ---    B  5 m& m* ~5 E! c" T
3  ---    1     ---    C  3 X/ ^7 O& X' p( Q9 Q
4  ---    4     ---    B  4 O* v$ {: j& u! t. i/ ^0 v8 c3 h
5  ---    4     ---    C  
- ?" t/ ]2 D) ^( _6 u6  ---    6     ---    A  
1 f4 z" X: s1 I% a0 [- ?7  ---    6     ---    B  
9 z+ T5 u* r& o5 k! B- d8  ---    6     ---    C  
) P9 b% V' v/ _& ]9  ---    6     ---    D, i9 [" J  B3 y
对于每组记录(按ParentID分组),我想查找所有没有包含“ A”作为数据值的记录的组。
* m2 Z( `4 o; `/ i& ?由于第1组和第6组确实包含至少一个以“ A”作为数据值的记录,因此我不希望看到它们。我只想查看记录4和5(它们是组4的一部分),因为该组中没有记录带有“
. L; q" e7 Z+ p- e& Q# c& B9 TA”。
5 C7 M" p0 g# o- e/ t任何帮助是极大的赞赏!8 E$ |( O) R! j3 h. L  O5 H# D
                ( {# c( T/ K# c' D4 X* e4 g" ?
解决方案:
+ U; R. Y4 |9 d' e               
0 l/ G6 t- S- N, n0 }9 `" v) Q" k  [; ^- }4 r9 A! v
& d5 ], I5 s! f6 {
                SELECT7 t4 B& o" _4 E
  ID,
  X; g$ ~& Z* j$ W  ParentID,
1 m; @: m+ C5 K3 k, f0 @  DataValue
! B9 [: B( P& O) N1 d+ V! H& ?2 [9 yFROM9 }! D- a& w( M) ?
  MyTable
* B, v$ Z! }- Q/ s/ [WHERE
) b1 v& M, F+ Y  h; V3 u+ K  O  NOT EXISTS (
" e2 P/ l7 n1 ]) J    SELECT 1
0 u$ }9 A; d0 E$ j' q      FROM MyTable i
: E& d+ x5 d/ ]% u2 G  h% P' ?+ j     WHERE i.ParentId = MyTable.ParentId AND i.DataValue = 'A'
8 X( A9 C& k% {$ r& {% }1 @  )
; A# {1 n. C8 a) y% W, e4 t(ParentId, DataValue)如果表很大,建议建立索引。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则