多表连接 去重

如题:单表去重我们可能都会想到distinct


多表连接,只有在查询的所有字段都重复的情况下,才去掉重复的行。那么我们可以采用取各个表的最大主键去重


如下:

SELECT DISTINCT A.NO ,B.NAME,C.ACTION

FROM TBL_A A,TBL_B B,TBL_C C

WHERE 

B.ID = (SELECT MAX(ID) FROM TBL_B WHERE A_ID = A.ID)

AND  C.ID = (SELECT MAX(ID) FROM TBL_C WHERE A_ID = A.ID)

AND .......


这样只取出各个表中的A_ID字段等于A.ID的那些行;然后取ID值最大(或者最小)的即可,因为去重去的是A.ID

 

posted @ 2013-06-27 19:29  爱生活,爱编程  阅读(619)  评论(0编辑  收藏  举报