尝试通过SQL JOIN将一列添加到表中

时间:2009-10-14 14:20:15

标签: mysql join

我想将两个表连接在一起并且只有表1中的数据(但是每个记录),并且如果适用的话,添加另一个表中的列的数据(每个记录都不匹配)

我尝试使用匹配四列的LEFT JOIN,但我得到了一些记录的双打。如果表1中有1050条记​​录,我想要返回1050条记​​录,但我得到的记录不止这些。

问题的一部分是没有任何索引列,因为每列都有在整个列中重复的值。

无论如何,这是我尝试的SQL语句,但我得到了四个额外的记录(重复)

SELECT t1.*, t2.assignedtechnician
FROM idlereport AS t1
LEFT JOIN wipassignedtechnician AS t2
ON (LEFT(t1.rma, 6)=LEFT(t2.rma, 6)
AND t1.receiveddate=t2.receiveddate
AND t1.serial=t2.serial
AND t1.partnumber=t2.partnumber)

P.S。我正在使用MySQL

2 个答案:

答案 0 :(得分:2)

问题是t2中有多条记录根据您指定的连接条件与t1中的单条记录匹配...

SELECT t1.*, Min(t2.assignedtechnician)
FROM idlereport AS t1
   LEFT JOIN wipassignedtechnician AS t2
       ON (LEFT(t1.rma, 6)=LEFT(t2.rma, 6)
           AND t1.receiveddate=t2.receiveddate
           AND t1.serial=t2.serial 
           AND t1.partnumber=t2.partnumber)
Group By t1.*

SELECT t1.*, 
    (Select Min(t2.assignedtechnician)
     From wipassignedtechnician 
     Where LEFT(rma, 6)=LEFT(t1.rma, 6)
           AND receiveddate=t1.receiveddate
           AND serial=t1.serial 
           AND partnumber=t1.partnumber) assignedtechnician
FROM idlereport AS t1

答案 1 :(得分:0)

在这种情况下,左连接是正确的连接,我猜你的问题是你的问题。为什么你加入字符串列而不是某些索引?

然而,你应该永远不会获得比左表(idlereport)更多的行