34,587
社区成员
发帖
与我相关
我的任务
分享
create table [user](id int,姓名 varchar(10),性别 varchar(10))
insert into [user] values(1 ,'张三', '男')
insert into [user] values(2 ,'李四', '女')
insert into [user] values(3 ,'王五', '男')
create table info(id int,姓名 varchar(10),信息 varchar(10))
insert into info values(1, '张三', '信息一')
insert into info values(2, '张三', '信息二')
insert into info values(3, '李四', '信息三')
insert into info values(4, '张三', '信息四')
insert into info values(5, '李四', '信息五')
go
select a.姓名,b.信息
from [user] a
outer apply(select top 1 信息 from info where a.姓名=姓名) b
/*
姓名 信息
---------- ----------
张三 信息一
李四 信息三
王五 NULL
(3 行受影响)
*/
用老D的表create table [user](id int,姓名 varchar(10),性别 varchar(10))
insert into [user] values(1 ,'张三', '男')
insert into [user] values(2 ,'李四', '女')
insert into [user] values(3 ,'王五', '男')
create table info(id int,姓名 varchar(10),信息 varchar(10))
insert into info values(1, '张三', '信息一')
insert into info values(2, '张三', '信息二')
insert into info values(3, '李四', '信息三')
insert into info values(4, '张三', '信息四')
insert into info values(5, '李四', '信息五')
go
select m.姓名 ,m.性别, 信息 = isnull((select top 1 信息 from info n where n.姓名 = m.姓名 order by id),'空') from [user] m
drop table [user] , info
/*
姓名 性别 信息
---------- ---------- ----------
张三 男 信息一
李四 女 信息三
王五 男 空
(所影响的行数为 3 行)
*/
SELECT U.*,I.信息 FROM USER U LEFT JOIN INFO I ON U.ID=I.ID