你的第三个条件让人看不懂,什么叫“如果对应于table1.A字段的table2.C字段有多个或者无,该字段返回NULL”,这句话是矛盾的。你指的一一对应是不是指
A=B AND B=C 啊???设TABLE1 和TABLE2的内容如下TABLE1               TABLE 2A     B              A     C王    90             王    学生
何    80             何    老师
      70             何    
李    60对于第一和第二个条件,给出如下SQL语句。
SELECT X.A,X.B,Y.C FROM TABLE1 X,TABLE2 Y
WHERE X.A=Y.A
AND X.B IS NOT NULL;

解决方案 »

  1.   


    select  A.A ,A.B,B.Cfrom table1 A table2 Bwhere A.A = B.A
       and Not IsNull(A.A)
       and (select count(*) from Table2 C 
             where A.A = C.A ) =1
      

  2.   

    select table2.A,table2.C from table1, table2 ,
    (select A,count(*) num from table2 group by table2.A) table3
     where table3.num = 1 and table3.A = table2.A and table1.A = table2.A
      

  3.   

    修改一下
    select table1.A,table2.C from table1, table2 ,
    (select A,count(*) num from table2 group by table2.A) table3
     where table3.num = 1 and table3.A = table2.A and table1.A = table2.A
      

  4.   

    以上均不能满足要求。to mars_bolt(火箭炮) :1、是ACCESS数据库,所以好多语法受到限制
    2、两个表分别有15个字段和10000条左右的记录,对于ACCESS来说,你这样的语句可以让它死掉了。我用下面的语句,ACCESS很长时间没有返回:
    SELECT table1.A,table1.B,
    (SELECT TOP 1 table2.C FROM table2 WHERE table2.A=table1.A AND table1.A IS NOT NULL )
    FROM table1
      

  5.   

    55555555 ACCESS
    那你改走其他的路吧!不要在数据库里做了。拿出来先。PS 谁要是有好办法通知我一声.
      

  6.   

    一条sql语句还要高效率恐怕不易实现。
    用两个记录集movenext,自己判断把
      

  7.   

    楼上的,两个记录集movenext会死得更惨
      

  8.   

    to : njtlxm(njtlxm) (  ) :你试过吗?我曾试过3000条左右的,速度挺快呀(Access 2000+ADO)
      

  9.   

    我测试通过了,只是不知是不是你想要的结果。SELECT [T1].[A], [T1].[B], [T2].[C]
    FROM T1, T2
    WHERE ([T1].[A]=[T2].[A] And [T1].[A] Is Not Null  and
          (SELECT count([T2].[C]) FROM T2 WHERE [T2].[A]=[T1].[A])=1);