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

如何在mysql中执行此内部连接查询,mysql,Mysql,这是我的问题 select * from table1 inner join table2 on table1.typeId=table2.typeId; 如果表2中的typeId没有重复多次,那么这种方法可以很好地工作,但是如果typeId存在多次,则会给出重复的行。 有没有办法避免重复行 table1 -- Name typeId Jay 1 roy 2 table2 -- Type typeId L 1

这是我的问题

select * from table1 inner join table2 on table1.typeId=table2.typeId;
如果表2中的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

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


添加尽可能多的联接条件,直到得到唯一的结果。如果有多个值与您的条件相匹配,则数据库无法知道您要选择哪一行,因此您必须在内部联接的ON子句中指定如何选择这一行。

下面是一个示例,其中当存在多个匹配项时,将返回最大的
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
如果要返回表1中的所有记录,即使表2中没有匹配项,也可以执行以下操作:

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

请提供示例数据和期望输出。如果相同的<代码> Type ID>代码多次发生,那么查询如何知道哪个<代码>表1>代码>记录对应于哪一个代码>表2>代码>记录?考虑使用左或右连接,为什么不使用<代码>不同的< /代码>?(我假设您不想要表2的类型)@Jay-由于
Jay
有两个匹配的
type
值,您需要决定要显示哪一个,例如,使用
max()
min()
select t1.Name, max(t1.TypeID) as TypeID
from table1 t1
group by t1.Name
select DISTINCT table1.Name, table2.typeId
from table1 inner join table2 on table1.typeId=table2.typeId;