求一Sql语句实现如下效果 表一:
姓名   性别  年龄
张三   男    19
李四   女    18
王五   男    19表二:
姓名    科目  成绩
张三    语文  86
张三    数学  75
王五    语文  87要求实现下面效果
姓名  性别  年龄  科目  成绩
张三   男   19    语文   86
张三   男   19    数学   75
李四   女
王五   男   19   语文    87

解决方案 »

  1.   

    select 表1.*,表2.科目,表2.成绩
    from 表1 left outer join 表2
    on 表1.姓名=表2.姓名最好不要有重名的,呵呵
      

  2.   

    select  
        a.姓名,
        a.性别,
        a.年龄,
        b.科目,
        b.成绩
    from 
        表一 a 
    left join 
        表二 b 
    on 
        a.姓名=b.姓名
      

  3.   

    select a.姓名,性别,年龄,isnull(科目,''),isnull(成绩,'') from  表一 left join 表二 on 表一.姓名=表二.姓名
      

  4.   

    CREATE TABLE 表1(
    姓名 VARCHAR(10),  
    性别  CHAR(2),
    年龄 INT
    )
    INSERT INTO 表1
    SELECT '张三',   '男',    19 UNION
    SELECT '李四',   '女',    18 UNION
    SELECT '王五',   '男',    19 CREATE TABLE 表2(
    姓名 VARCHAR(10),  
    科目  CHAR(10),
    成绩 INT
    )
    INSERT INTO 表2
    SELECT '张三',    '语文',  86 UNION
    SELECT '张三',    '数学',  75 UNION
    SELECT '王五',    '语文',  87
    SELECT A.姓名,A.科目,A.成绩,B.性别,B.年龄 FROM 表2 A,表1 B
    WHERE A.姓名=B.姓名
    UNION 
    SELECT 姓名,NULL,NULL,性别,年龄 FROM 表1 WHERE 姓名 NOT IN (SELECT 姓名 FROM 表2)
      

  5.   

    两个表关联就OK了
    语法:
    select * from TableNameA A
    inner join TableNameB B
    where A.TID=B.TID
    这类似这样取数据就OK了
      

  6.   

    CREATE TABLE 表1(
    姓名 VARCHAR(10),  
    性别  CHAR(2),
    年龄 INT
    )
    INSERT INTO 表1
    SELECT '张三',   '男',    19 UNION
    SELECT '李四',   '女',    18 UNION
    SELECT '王五',   '男',    19 UNION
    SELECT '赵六',   '男',    18 CREATE TABLE 表2(
    姓名 VARCHAR(10),  
    科目  CHAR(10),
    成绩 INT
    )
    INSERT INTO 表2
    SELECT '张三',    '语文',  86 UNION
    SELECT '张三',    '数学',  75 UNION
    SELECT '王五',    '语文',  87 UNION
    SELECT '张三',    '英语',  67 UNION
    SELECT '赵六',    '数学',  91
    SELECT A.姓名,B.性别,B.年龄,A.科目,A.成绩 FROM 表2 A,表1 B
    WHERE A.姓名=B.姓名
    UNION 
    SELECT 姓名,性别,年龄,NULL,NULL FROM 表1 WHERE 姓名 NOT IN (SELECT 姓名 FROM 表2) order by a.姓名