0

我想在不增加编号的情况下加入表数据。的行。
并且这两个表在没有主键的情况下加入,只有在两者中通用的列的帮助下,我不能将其他列用于结果,因为根本没有其他列相关。

表格1

  id1(pk)   name   country  clm_id
   1    abc     3        23
   2    abc     4        23

表 2

   id2(pk)   city    state    clm_id
    1    cdv      5        23
    2    sdc      5        23

我想通过 clm_id 加入这些表,但它给了我 4 行, 我想要

      id1   name   country  clm_id  id2   city    state  
        1    abc     3        23     1    cdv      5  
        2    abc     4        23     2    sdc      5 

但我得到

      id1   name   country  clm_id  id2   city    state  
        1    abc     3        23     1    cdv      5  
        1    abc     3        23     2    sdc      5  
        2    abc     4        23     1    cdv      5 
        2    abc     4        23     2    sdc      5 

怎么做..请看这个链接.. 例子

4

1 回答 1

6

可能您正在像下面这样加入,它产生笛卡尔积。

SELECT  a.*, b.*
FROM    table1 a,table2 b

这应该很简单。

SELECT  a.*, b.*
FROM    table1 a
        INNER JOIN table2 b
            ON a.id1 = b.id2

要了解有关联接的更多信息,请参阅下面的链接。

更新 1

SELECT  b.FLD_CUSTOMER_CLAIM_ID, 
        FLD_CUSTOMER_REG_CONTACT_ID,    
        FLD_TYPE,   
        FLD_NAME,   
        FLD_EMAIL_ID,   
        FLD_MOBILE, 
        FLD_DEPARTMENT, 
        FLD_ROLE,   
        FLD_SALUTATION,
        FLD_CRM_CUSTOMER_REG_TAX_ID,    
        FLD_TAX_TYPE,   
        FLD_APPLICABLE_FLAG,    
        FLD_MANUAL_FILLING_FLAG,    
        FLD_EFILLING_FLAG
FROM
  (
    SELECT @row:=@row+1 RowNo, a.*
    FROM   TBL_CUSTOMER_REGISTRATION_CONTACT_DETAILS a, (SELECT @row:=0) s
    WHERE  a.FLD_CUSTOMER_CLAIM_ID = 32768
  ) b INNER JOIN
  (
    SELECT @rowB:=@rowB+1 RowNo, a.*
    FROM   TBL_CUSTOMER_REGISTRATION_TAX_DETAILS a, (SELECT @rowB:=0) s
    WHERE  a.FLD_CUSTOMER_CLAIM_ID = 32768
  ) c ON b.RowNo = c.RowNo
于 2013-01-01T04:06:21.013 回答