现有A和B两个表,A有字段a1,a2,a3,a4,B有字段b1,b2,关联是A表中的a2+a3+a4等于B表中的b2,我现在要进行两个表中的查询,不管是表A还是表B,只要有A.a1和B.b1查询的字词,就把表A的纪录显示出来,我需要用一个记录集显示所有符和查询标准的表A中的纪录。即,记录里应有A表a1符合条件的内容还有B表b1符合条件时对应A表的a1内容。请问sql语句应该怎么写?

解决方案 »

  1.   

    select a.*,b.* from a a left join b b on a.a2=b.b1
      

  2.   

    select * from A where a1=..
    union all
    select A.* from A,B where (A.a2+A.a3+A.a4)=B.b2
      

  3.   

    to yoki:
    这样的查询会有重复纪录,因为select * from A where a1=XX(假设条件为XX)部分可能会包括B表中的内容。实际应用中,A表为提问问题表,B表为回复问题表,要求查出所有关于某一特定问题的问题及相关纪录,而该问题可能在B表中提及。
      

  4.   

    该问题现用这种方式解决:
    select * from A where a1=XX
    union 
    select A.* from A left join B on (A.a2+A.a3+A.a4)=B.b2 where A.a1<>XX and B.b1=XX不知道有没有更有效率的解决办法?