这个用in能解决?能的话怎么写?
这个问题和in没关系.
百度:分组取第一.
分组取第一,得到的是科目和最高成绩,但是没有学生信息
现在是要有学生信息,取出来的分组在和上面的表关联查询是可以,问题是能不能用一条带in关键字的sql语句直接查询出来?
@Smile灬Lucky: 谁说的..分组取第一当然取的是一整条数据了.
@吴瑞祥: 我想问的就是,能不能用包含In的关键字,一条sql语句写出对应的sql? 行或者不行?行的话怎么写? 百度没有找到包含in的sql
select * from t_source where (score,subject) in (
select max(score),subject from tb grouy by subject
)
你这个应该是oracle的题吧。mssql的in不能这样。确实用得到in,而且也这样查询才正常,只是表很奇葩。这个仅仅是个题。实际表结构不会这样的。
这个不是oracle,是sqlserver,sqlserver不能这么,这个我想了好像,总感觉用in不可以查出来,这个是实验表,实际表肯定有个主键,标识列的
@Smile灬Lucky: 这个后面就不写了,如果要强行用肯定还是用得上啊。比如 score_subject in (xxx)一样的能用得上。
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
你看一下是否这样分组
先通过学科(Subject)分组,查询出每科对应最高分(max(score)),然后使用in,就可以查出所有信息了:
select * from t_score where score in(select max(score) from t_score s group by s.Subject)
不能解决in是取范围
select t.* from t_score t where 1>(select count(*) from t_score where subject=t.subject and t.score<score)
阿琪玛哦哦