使用MySQL连接表

时间:2015-03-01 18:57:00

标签: mysql join

抱歉标题不好,但我不知道应该是什么。

我想加入两个表,但行数应与表一相同。

这是我的表格

====Table 1=====

| Name | IdCardNo |
===============
| Peter | 1234 |
| Mary | 5678 |
===============

==========Table 2=========
| IdCardNo | phoneNo | Job |
=========================
|1234|11111111|Student|
|1234|11111111|Waiter|
|5678|22222222|Student|
=========================

这是我想要的结果

Peter|1234|11111111|
Mary|5678|22222222|

但如果我做SELECT NAME, PhoneNo FROM Table1 LEFT JOIN Table2 on Table1.IdCardNo=Table2.IdCardNo 我明白了

Peter|1234|11111111|
Peter|1234|11111111|
Mary|5678|2222222|

我知道我可以做GROUP BY NAME,但我认为这不是一个好主意。

我应该使用什么查询?

我认为SELECT DISTINCT...是我想要的。谢谢!

4 个答案:

答案 0 :(得分:0)

只需使用DISTINCT

即可
  

SELECT DISTINCT语句用于仅返回distinct   (不同的)价值观。

这样的东西
SELECT DISTINCT NAME, PhoneNo 
FROM Table1 LEFT JOIN 
Table2 on Table1.IdCardNo=Table2.IdCardNo

也许您可能想重新考虑表格的设计。除非table2的每个实例都需要不同(可能)的数字,否则您可能希望将该数字存储在table1

答案 1 :(得分:0)

您的预期结果不明确

Mary|5678|11111111|

我想应该是

Mary|5678|22222222|

这可以实现

select 
t1.Name,
t1.IdCardNo,
t2.phoneNo
from table1 t1
join table2 t2 on t1.IdCardNo = t2.IdCardNo
group by t1.Name,t1.IdCardNo,t2.phoneNo

答案 2 :(得分:0)

SELECT distinct t1.NAME,t1.idCardNo,t2.PhoneNo FROM Table1 t1 LEFT JOIN table2 t2 on t1.IdCardNo = t2.IdCardNo

Distinct将跳过结果集中的相同行!

答案 3 :(得分:0)

'Select distinct'将仅使用唯一值填充连接表。试试看,让我知道。