有两个表一个是人员表user,一个是信息表info
user表             info表
id  姓名  性别    id    姓名   信息
1   张三  男      1     张三   信息一
2   李四  女      2     张三   信息二
3   王五  男      3     李四   信息三
                  4     张三   信息四
                  5     李四   信息五两个表的关联字段是姓名
希望的结果是
张三  男  信息一
李四  女  信息三
王五  男  空

解决方案 »

  1.   

    SELECT U.*,I.信息 FROM USER U LEFT JOIN INFO I ON U.ID=I.ID
      

  2.   

    user表 
    id 姓名 性别 
    1 张三 男 
    2 李四 女 
    3 王五 男 
     
     info表
    id 姓名 信息
    1 张三 信息一
    2 张三 信息二
    3 李四 信息三
    4 张三 信息四
    5 李四 信息五
      

  3.   

    select m.姓名 ,m.性别 ,isnull(n.信息,'空') 信息
    from [user] m left join info n on m.姓名 = n.姓名
      

  4.   

    如果是最开始的需求:
    select m.姓名 ,m.性别 ,isnull(n.信息,'空') 信息
    from [user] m left join info n on m.姓名 = n.姓名如果是后面的:
    select m.姓名 ,m.性别, isnull((select top 1 信息 from info n where n.姓名 = m.姓名 order by id),'空') from [user] m
      

  5.   

    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, '李四', '信息五')
    goselect m.姓名 ,m.性别, 信息 = isnull((select top 1 信息 from info n where n.姓名 = m.姓名 order by id),'空') from [user] mdrop table [user] , info/*
    姓名         性别        信息            
    ---------- ---------- ---------- 
    张三         男          信息一
    李四         女          信息三
    王五         男          空(所影响的行数为 3 行)
    */
      

  6.   

    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的表