如何只加入表而不是行

时间:2013-01-01 04:04:28

标签: mysql sql select join

我想在不增加no的情况下加入表数据。行。
并且这两个表在没有主键的情况下加入,只有两个列中共有的列的帮助,没有其他列可以用于结果,因为没有其他列完全相关。

表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 

怎么做...         请查看此链接.. example

1 个答案:

答案 0 :(得分: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