如何在mysql中执行此内连接查询

时间:2012-03-29 15:16:39

标签: mysql

这是我的查询

select * from table1 inner join table2 on table1.typeId=table2.typeId;

如果table2中的typeId不会重复多次,但如果typeId存在多次,则会产生重复行,这样可以正常工作。 有没有办法避免重复行?

table1  -- Name typeId
           Jay  1
           roy  2
table2  -- Type typeId
           L    1
           M    1
           N    2
           K    2

Expected output Jay  1
Output getting is Jay  1
                  Jay  1

3 个答案:

答案 0 :(得分:1)

select DISTINCT table1.Name, table2.typeId
from table1 inner join table2 on table1.typeId=table2.typeId;

答案 1 :(得分:0)

您需要连接多个列以避免重复(如果您的行相同,则使用SELECT DISTINCT)

select * from table1 inner join table2 on table1.typeId=table2.typeId AND table1.otherId = table2.otherId;

添加尽可能多的连接条件,直到获得唯一结果。如果有多个值符合您的条件,那么数据库无法知道您要选择哪一行,因此您必须指定在INNER JOIN的ON子句中选择该行的方式。

答案 2 :(得分:0)

下面是一个例子,当有一个匹配项时,返回最大typeid

select t1.Name, max(t1.TypeID) as TypeID
from table1 t1
inner join table2 t2 on t1.typeId = t2.typeId
group by t1.Name

如果你想要返回table1中的所有记录,即使表2中没有匹配,你可以这样:

select t1.Name, max(t1.TypeID) as TypeID
from table1 t1
group by t1.Name