这是我的查询
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
答案 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