在MySQL中加入Left之后的更多行

时间:2017-06-07 07:47:46

标签: mysql join

我有两个表,table1包含22780行。现在我将table1与table2(它不包含任何重复项)连接起来,我得到了23588行。

SELECT   * FROM Table1
left join Tabelle6 ON CAST(Table1.Customer AS Int) = table2.Customer

为什么我现在要获得更多行?我只需要table1中的每一行。

编辑:发现我的问题,表2确实包含重复项。但有没有办法只加入每一行而忽略任何进一步的匹配?

1 个答案:

答案 0 :(得分:2)

正如评论所示,处理此问题的最简单方法可能是SELECT DISTINCT删除结果集中的重复项:

SELECT DISTINCT
    t1.col1,
    t1.col2,
    t1.Customer,
    ...
FROM Table1 t1
LEFT JOIN Table2 t2
    ON CAST(t1.Customer AS Int) = t2.Customer

但这里有另一种选择。我们也可以加入子查询,删除重复的客户。这将确保第一个表中的记录不会从匹配到第二个表中的多个记录中重复。

SELECT *
FROM Table1 t1
LEFT JOIN
(
    SELECT DISTINCT Customer
    FROM Table2
) t2
    ON CAST(t1.Customer AS Int) = t2.Customer