string table = "(select a.CUSTOM_NO,a.CUSTOM_TYPE,a.CNAME,a.CADDR,b.ATTN,b.PK_PORT,b.FAX,b.TEL from CUSTOM a left join AEMPK b on a.CUSTOM_NO = b.CUSTOM_NO) A";上面這條語句,通過左連接AEMPK,AEMPK是CUSTOM的明細表,CUSTOM與AEMPK為1:N關係,現在我想抓取的資料是不能重複的,也就是說只匹配子表AEMPK中符合條件的第一條記錄。要怎麼寫語法?

解决方案 »

  1.   

    string table = "(select a.CUSTOM_NO,a.CUSTOM_TYPE,a.CNAME,a.CADDR,b.ATTN,b.PK_PORT,b.FAX,b.TEL from custom a,(select b.CUSTOM_NO,b.ATTN,b.PK_PORT,b.FAX,b.TEL ,row_number()over(partition by b.CUSTOM_NO order by b.CUSTOM_NO) rn from AEMPK b ) b where a.CUSTOM_NO = b.CUSTOM_NO and b.rn=1) A";
      

  2.   

    這樣還是有點問題,就是右表中如果沒有數據,左表也不會查詢出來,數據會少很多的。如果AEMPK沒有數據,也應該要有custom的數據,左連接。
      

  3.   

    select a.CUSTOM_NO,a.CUSTOM_TYPE,a.CNAME,a.CADDR,b.ATTN,b.PK_PORT,b.FAX,b.TEL 
    from CUSTOM a left join AEMPK b on a.CUSTOM_NO = b.CUSTOM_NO你这样连接当然是匹配多条记录,你想要匹配后的第一条记录?准确表达了?还是想要CUSTOM与明细表AEMPK的第一条记录连接?如何确认你想要匹配后的第一条记录? 按什么排序的第一条记录?连接后默认的排序?
      

  4.   

    select a.CUSTOM_NO,a.CUSTOM_TYPE,a.CNAME,a.CADDR,b.ATTN,b.PK_PORT,b.FAX,b.TEL  
    from CUSTOM a left join AEMPK b on a.CUSTOM_NO = b.CUSTOM_NO应该是可以的