两张表 t1, t2, 左连接关系 为 t1.a11 = t2.a21
t1为主表,t2 子表,
其中 在 t2 上有个限制条件 t2.a22 = 'm' ,
但现在, 如果t2 有数据,没有一行数据的条件 t2.a22 ='m' 成立时,主表上也要有一条数据, 不知道怎么写了,
本来的主、写法  select t1.* , t2.* from t1 left join t2 on t1.a11 = t2.a21 where t2.a22='m' 就可以了,
但满足不了后面的条件

解决方案 »

  1.   

    select t1.*,t2.* from t1 left join (select t2.a21,t2.a22 from t2 where t2.a22 = 'm') t2
    on t1.a11 = t2.a21不知道可不可以
      

  2.   

    对了,如果我有多张表要进行  join,是不是最好 都来个子查询, 并在子查询中把 限定条件放进去(当然,是保证结果正确的前提下),这样查询的是不是要快些,
      

  3.   

    加分继续求解
    现在不是两张表,是多张表,比如四张
    t1, t2, t3, t4 选择出来的列是 四张表里 比如 t1.a11, t2.a21, t3. a31, t4.a41
    需要左连接((t1 left join t2 on t1.a12 = t2.a22 )t12 left join t3 on t12.a23 = t3.a33 ) t123 left join t4 on t123.a34 = t4.a44
    ,
    但这样就写不了 t1.a11了,只能是 t123.a11, 而且 这些表(t1,t2, t3) 中可能有重名的字段.又不好写了
      

  4.   

    如果条件是t1.a22='m'又该怎么写呢?