A、B表数据:
---A------
DEPT  AGE  SEX
1001  29    男
1001  25    男
1001  25    男
1001  25    男
1002  22    女
1002  27    女
1004  35    男
----B-----
DEPT  AGE  SEX
1001  22    男
1001  25    女
1001  25    女
1002  35    男
1002  29    女
1002  27    男
1025  31    女查询select A.* from A,B where A.DEPT=B.DEPT AND A.AGE=B.AGE AND A.SEX<>B.SEX
结果是:
1001  25    男
1001  25    男
1001  25    男
1001  25    男 因为A有3个“1001 25  男”B有2个“1001 25 女”,所以3*2=6个
1001  25    男
1001  25    男
1002  27    女
我想A、B表中部门(DEPT)和年龄(AGE)相同,性别不同信息配对,希望得到以下结果:
1001  25    男
1001  25    男   因为B表只有2个“1001 25 女”
1002  27    女
如果不用存储过程,单个SQL如何写???

解决方案 »

  1.   

    两张表的定义完全一样。。为什么要分成两张表?你现在是A表记录数大于等于B表记录数,
    那如果B表记录数大于等于A表记录数呢?咋办?
      

  2.   

    ---A------
    ID DEPT  AGE  SEX
    1  1001  29    男
    2  1001  25    男
    3  1001  25    男
    4  1001  25    男
    5  1002  22    女
    6  1002  27    女
    7  1004  35    男
    我觉得在A表内加一个标识就可以了
    然后在SQL语句里加一个distinct
    select distinct A.* from A,B where A.DEPT=B.DEPT AND A.AGE=B.AGE AND A.SEX<>B.SEX
      

  3.   

    用join和union,具体看一下Sql语法的帮助。
      

  4.   

    实在想不出一句搞定的SQL..汗 。。
      

  5.   

    SQL语句存在不明错误--"男女配对”
      

  6.   

    select distinct A.* from A,B where A.DEPT=B.DEPT AND A.AGE=B.AGE AND A.SEX<>B.SEX