欢迎访问我的博客 https://javascript.shop

问的问题的答案~

原文发布时间为:2008-10-19 —— 来源于本人的百度文章 [由搬家工具导入]

有两张表
Test表 Paper表
User Paper User Paper Score
1 1 1 1 80
2 1 2 1 81
2 1 82
2 2 83
3 1 84


1、帮我写一条语句,把Paper中的 两个 (2 1 81), (2 1 82)只保留前一条记录,就是表中如果存在(User,Paper)相同的,只保留第一条记录;
如上表删除后结果为:

User Paper Score
1 1 80
2 1 81
2 2 83
3 1 84


2、帮我写一条 Select 语句,结合 Test 与Paper,使Paper中的(User,Paper)与Test中的(User,Paper)相等,但是只能取第一条记录;如上表取的结果是

User Paper Score
1 1 80
2 1 81
                               

select [User],[Paper],min([Score]) as [Score]
from
(
select t.[User],t.[Paper],p.[Score]
from [Test] t
left join [Paper] p
on t.[User]=P.[user] and t.[Paper]=p.[Paper]
) a
group by [User],[Paper]

1、group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面

2、from 后面必须跟着表
这句子查询里的查询结果相当于构建了一张新表 a就是这张新表的名字

posted @ 2017-07-09 15:04  孑孓子  阅读(74)  评论(0编辑  收藏  举报
欢迎访问我的博客 https://javascript.shop