select T1.月份,T2.项目名称 from 月份表 T1 LEFT JOIN 项目表 T2 ON T1.月份=T2.月份 order  by T1.月份

解决方案 »

  1.   

    select m.yf,o.objxx from month m left join object_test  o on m.yf=o.yf order by m.yf desc;
      

  2.   

    通过 你月份表(month) 左连接 项目表(exp).
    SQL例子如下:    select m.month_,e.* from month m
        left join exp e on e.month_ = m.month_
        --左连接解释:月份表month通过月份连接exp项目表,即已month为主表,
        --不管项目表exp有没有都会有记录。
        --①当exp表连接无数据时,会只展示一条month记录而其他为空。
        --②当exp表连接有数据是,根据连接到的项目记录数,生成相应的连接数据记录条数。
      

  3.   

    同意楼上的,用连接表应该是比较好的解决方法。或者你可以用not in,逻辑上比较好理解,不过执行效率比较慢
    select m.* from month1 m where m.month not in (select month from month2)
      

  4.   

    Select a.月份,sum(b.值) As 值
    From 月份 a,项目 b
    Where a.月份=b.月份(+)
    Group By a.月份 Order By a.月份
      

  5.   

    我觉得你这个问题你使用左连接是最简单的:
    select * from mymonth m left join mywork w on m.month=w.month order by m.month;
      

  6.   


    显示全部数据不得用not in 
      

  7.   

    with m12 as (select rownum as monthid from dual connect by rownum <=12)
    select m12.monthid , xm.* from m12 left join xm on m12.monthid = xm.monthid再改改,大概就是这个语法,我没有环境,也没有测试,有问题可以直接回复我。
      

  8.   

    同楼上,使用左连接
    select yuefen.month xiangmu.xiangmumc from yuefen T1 LEFT JOIN xiangmu T2 ON T1.month=T2.month
      

  9.   

    not in 在查询多条数据时,效率很慢,使用外连接比较好,
    select * from mymonth m left join mywork w on m.month=w.month order by m.month;
      

  10.   


    在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定: 
     1)LEFT  JOIN或LEFT OUTER JOIN     
    左向外联接的结果集包括  LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。       
     2)RIGHT  JOIN 或 RIGHT  OUTER  JOIN     
    右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。       
    3)FULL  JOIN 或 FULL OUTER JOIN
    完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。而NOT IN速度很慢,因为这样会存在两个全表检索的情况,而且,not in (...) 括号中的返回值不能存在null值,是Oracle SQL开发的一条铁律 因此,请尽量不要使用not in(它会调用子查询)。 
      

  11.   

    left join即可,select * from table1 left join table2 on a.id=b.id,默认会以左侧为准,右侧补空
      

  12.   

    错了,是以月份为匹配,改成这个select * from table1 left join table2 on a.month=b.month,默认会以左侧为准,右侧补空
      

  13.   

    使用表的外连接查询,左向外联接的结果集包括  LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。