本人SQL菜鸟,现在遇到一个问题,望各位大侠帮忙:
我现在有两个表A和表B,其结构为:
A:字段a,字段b,字段c,字段d四个列,B:字段b,字段c,字段e三个字段,其中A、B中的字段b和字段c是相同值的,我现在就是要取出A、B表中字段b和字段c完全相等的时候才取出,还是写列子比较容易明白吧,比如A中的数据如下:
A:  字段a   字段b   字段c 字段d
       a       b     c   d
       d       b     c1   d1
       b       b     c2   d2
       c       a     b   d
       d       a     v   b
       a       c     m   dB中的数据如下:
B: 字段b 字段c 字段e
b c1 h
a b s
a v b
c m d
这样查询的时候我想要的结果应该就是B中的第二、三、四行,而第一行是不应该出来的,也就是说A表中的字段b与B表中的字段b相等,而A表中的字段c不但要与B表中的字段c相等而且数量也要相等才行,即A表中字段b的值为b的数据有三条也就是字段c有c、c1、c2这三个值,这是表B中也要是这样时结果才能出现字段b的值为b的那些值,怎么查询???

解决方案 »

  1.   

    --如果不考虑数量
    select b.* from b , a where b.b = a.b and b.c = a.c--如果考虑数量
    select b.* from b, 
    (select b , c , count(1) cnt from a group by b , c) m,
    (select b , c , count(1) cnt from b group by b , c) n
    where b.b = m.b and b.c = m.c and m.b = n.b and m.c = n.c and m.cnt = n.cnt
      

  2.   

    超级大侠出马了,咱也就只能关注一下的份了。学习dawugui的思想。