SELECT * FROM A LEFT JOIN B ON xxx LEFT JOIN C ON A.NAME = C.NAME
现在的问题是 在表C中有很多重复NAME的记录,所以如果A.NAME = C.NAME的话讲取到很多重复的记录,现在希望能distinct掉由于A.NAME = C.NAME取出的多余的记录,我觉得应该在ON后嵌套查询,可不知道该如何写。

解决方案 »

  1.   

    如果b表有多个记录对应a表的一条记录,b表的记录怎么取?
      

  2.   

    这你就要接着在ON后面加and连接条件了啊。
      

  3.   

    本帖最后由 josy 于 2010-12-20 13:50:53 编辑
      

  4.   

    不太明白如何写,能给个示范吗,如果and后面加条件的话,我想是没有其他条件可以加的了,现在只是想限制取出来记录的唯一性。
      

  5.   

    如果比计较速度,直接在最外层的查询里distinct一下就可以了吧。不用在链接时对链接表进行去重复处理。
      

  6.   

    SELECT * FROM A LEFT JOIN B ON xxx LEFT JOIN C ON A.NAME = C.NAME AND C.NAME IN (SELECT MAX(NAME) FROM C GROUP BY NAME)
      

  7.   

    SELECT * FROM A LEFT JOIN B ON xxx LEFT JOIN C ON A.NAME = C.NAME  Where 条件=条件   即可。
      

  8.   

    SELECT * 
    FROM A 
    LEFT JOIN B ON xxx 
    LEFT JOIN C ON A.NAME = C.NAME
    where C.id=(select max(id) from C c1 where C.name=C1.name)