有三张表abc,它们之间都是多对多的关系
业务与业务类别关系表A 字段如下: (该表主键为联合主键servicegroupindex,serviceindex)
  servicegroupindex  --业务类别序号 
  serviceindex       --业务序号 
  serviceid          --业务ID
业务类别与栏目关系表B 字段如下:(该表主键为联合主键cat_id,servicegroupindex)
    cat_id              --栏目序号 
    servicegroupindex   --业务类别序号 
a和b表中已经存在有记录,现在想联合表a,b来查询到某业务对应的栏目序号cat_id结果集
SQL如下: 
select b.cat_id a.serviceid from B b, A a where a.servicegroupindex = b.servicegroupindex and a.serviceindex=?
但假设A和B表中已有的记录分别是下面这样: A表 
servicegroupindex  serviceindex   serviceid              
1                  11             8011
2                  11             8011
3                  11             8011B表 
cat_id      servicegroupindex           
100         1 
200         1 
100         3 这样,执行上面写的那个SQL后,条件serviceindex=11的时候,查询出的结果为: 
100    8011
200    8011
100    8011这样就有2条1 A的重复记录,请人各位,针对这样的场景逻辑,想要得到下面的结果集:
100    8011
200    8011后来将SQL修正为:
select distinct b.cat_id a.serviceid from B b, A a where a.servicegroupindex = b.servicegroupindex and a.serviceindex=?
当serviceindex=11时,即可得到自己想要的结果。备注:该帖其实SQL实现都不难,主要是一个思维的问题,以前没有遇到过这样的业务逻辑(需要在两个关系表中去联合查询得到想要的结果),故在这里贴出来,刚自己测试过了,没问题。