SQLServer left join 出现比左表多的数据

create table a(
	id int,
	name varchar(100)
)
create table b(
	id int,
	name varchar(100)
)
insert into a(id,name) values(1,'a');

insert into b(id,name) values(1,'a');
insert into b(id,name) values(2,'a');

select a.id from a left join b on a.name=b.name;

错误

当右表出现2条匹配记录时,返回比左表多的数据

可以使用max来解决

select a.* from a left join(
	SELECT * FROM b WHERE b.id IN (SELECT MAX(id) FROM b GROUP BY name)
) k on a.name=k.name

OK

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章