求一Sql语句实现如下效果 表一:
姓名 性别 年龄
张三 男 19
李四 女 18
王五 男 19表二:
姓名 科目 成绩
张三 语文 86
张三 数学 75
王五 语文 87要求实现下面效果
姓名 性别 年龄 科目 成绩
张三 男 19 语文 86
张三 男 19 数学 75
李四 女
王五 男 19 语文 87
姓名 性别 年龄
张三 男 19
李四 女 18
王五 男 19表二:
姓名 科目 成绩
张三 语文 86
张三 数学 75
王五 语文 87要求实现下面效果
姓名 性别 年龄 科目 成绩
张三 男 19 语文 86
张三 男 19 数学 75
李四 女
王五 男 19 语文 87
from 表1 left outer join 表2
on 表1.姓名=表2.姓名最好不要有重名的,呵呵
a.姓名,
a.性别,
a.年龄,
b.科目,
b.成绩
from
表一 a
left join
表二 b
on
a.姓名=b.姓名
姓名 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)
语法:
select * from TableNameA A
inner join TableNameB B
where A.TID=B.TID
这类似这样取数据就OK了
姓名 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.姓名