我想将两个表连接在一起并且只有表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
答案 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)更多的行