Left Join返回比表1中更多的记录并添加其他数据

时间:2014-07-24 10:03:00

标签: mysql sql join

我是MySQL的新手,以前在MS Access中完成了所有工作。我试图将2个表连接在一起,以便我可以显示Table1中的所有记录并添加Table2中的某些列。

我可以使用

将表连接在一起
SELECT Table1.Name, Table1.Address, Table1.TelephoneNumber
FROM Table1
LEFT JOIN Table2
ON Table1.TelephoneNumber=Table2.PhoneNumber

表1有3900条记录,表2有近7百万条

然后我想在Table2中添加(例如)PostTown和PostCode。这样我的查询就会返回

Table1.Name,Table1.Address,Table1.TelephoneNumber,Table2.PostTown,Table2.PostCode

如何使查询仅返回Table1中的所有内容,但显示Table2中的匹配项,其中包含一些匹配项,而不显示其中的匹配项。 Table2.PhoneNumber中有一些空白值,我认为它在我的结果中重复,因为它返回了近一百万行......

4 个答案:

答案 0 :(得分:0)

SELECT Table1.Name, Table1.Address, Table1.TelephoneNumber
FROM Table1
LEFT JOIN Table2
ON Table1.TelephoneNumber=Table2.PhoneNumber
WHERE Table1.TelephoneNumber IS NOT NULL

答案 1 :(得分:0)

请尝试以下操作。

SELECT Table1.Name, Table1.Address, Table1.TelephoneNumber FROM Table1 
LEFT JOIN Table2 ON Table1.TelephoneNumber=Table2.PhoneNumber
where Table1.TelephoneNumber is not null

答案 2 :(得分:0)

您的数据中有空白(非空):

SELECT Table1.Name, Table1.Address, Table1.TelephoneNumber
FROM Table1
LEFT JOIN Table2
  ON Table1.TelephoneNumber = Table2.PhoneNumber
  AND Table1.TelephoneNumber != ''

检查NOT NULL无济于事,因为null不等于null(而空白等于空白)

答案 3 :(得分:0)

SELECT Table1.Name,Table1.Address,Table1.TelephoneNumber,Table2.PostTown,Table2.PostCode     从表1     LEFT JOIN表2        在Table1.TelephoneNumber = Table2.PhoneNumber

识别SELECT语句中所需的所有数据,而不仅仅是表1中的数据。 连接将匹配表之间的正确数据。