本人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的那些值,怎么查询???
我现在有两个表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的那些值,怎么查询???
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