首页 新闻 会员 周边

sql语句问题

0
悬赏园豆:5 [待解决问题]

这个用in能解决?能的话怎么写?

Smile灬Lucky的主页 Smile灬Lucky | 初学一级 | 园豆:163
提问于:2019-03-28 19:24
< >
分享
所有回答(6)
0

这个问题和in没关系.
百度:分组取第一.

吴瑞祥 | 园豆:29449 (高人七级) | 2019-03-28 19:42

分组取第一,得到的是科目和最高成绩,但是没有学生信息
现在是要有学生信息,取出来的分组在和上面的表关联查询是可以,问题是能不能用一条带in关键字的sql语句直接查询出来?

支持(0) 反对(0) Smile灬Lucky | 园豆:163 (初学一级) | 2019-03-28 19:46

@Smile灬Lucky: 谁说的..分组取第一当然取的是一整条数据了.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2019-03-28 21:09

@吴瑞祥: 我想问的就是,能不能用包含In的关键字,一条sql语句写出对应的sql? 行或者不行?行的话怎么写? 百度没有找到包含in的sql

支持(0) 反对(0) Smile灬Lucky | 园豆:163 (初学一级) | 2019-03-29 09:50
0

select * from t_source where (score,subject) in (
select max(score),subject from tb grouy by subject
)

你这个应该是oracle的题吧。mssql的in不能这样。确实用得到in,而且也这样查询才正常,只是表很奇葩。这个仅仅是个题。实际表结构不会这样的。

gw2010 | 园豆:1487 (小虾三级) | 2019-03-29 11:05

这个不是oracle,是sqlserver,sqlserver不能这么,这个我想了好像,总感觉用in不可以查出来,这个是实验表,实际表肯定有个主键,标识列的

支持(0) 反对(0) Smile灬Lucky | 园豆:163 (初学一级) | 2019-03-29 11:42

@Smile灬Lucky: 这个后面就不写了,如果要强行用肯定还是用得上啊。比如 score_subject in (xxx)一样的能用得上。

支持(0) 反对(0) gw2010 | 园豆:1487 (小虾三级) | 2019-03-29 11:52
0

if object_id('tb')is not null drop table tb
Go
create table tb(name varchar(10),sub_ject varchar(10),scoreint)
insert into tb values('张三','语文',74)
insert into tb values('张三','数学',83)
insert into tb values('张三','英语',93)
insert into tb values('李四','语文',74)
insert into tb values('李四','数学',84)
insert into tb values('李四','英语',94)
go
select * from tb

select * from tb pivot(max(score) for sub_ject in ('语文','数学','英语')) a

你看一下是否这样分组

wavegui | 园豆:80 (初学一级) | 2019-03-29 15:59
0

先通过学科(Subject)分组,查询出每科对应最高分(max(score)),然后使用in,就可以查出所有信息了:

select * from t_score where score in(select max(score) from t_score s group by s.Subject)
三人乐乐 | 园豆:4819 (老鸟四级) | 2019-03-29 17:32
0

不能解决in是取范围
select t.* from t_score t where 1>(select count(*) from t_score where subject=t.subject and t.score<score)

一世红尘 | 园豆:321 (菜鸟二级) | 2019-03-30 14:10
0

阿琪玛哦哦

会长 | 园豆:12401 (专家六级) | 2019-08-14 10:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册