急问:这个SQL语句怎么写?

nkzgj 2001-09-18 03:51:43
数据库中表名为students,每一记录代表一个学生。其字段包括“院系名称”和“Group_ID”等。“Group_ID”是指把学生分组后得到的组序号。其值为1,2,3,...
每个组可能包括若干个学生。
现在我想1.查询出某系(比如“化学系”,其组序号可能在34--48之间)的学生中组序号最低的一组学生。应该怎么写SQL语句?
2.再查询组序号第二低的一组学生,又应怎么写?
...全文
106 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
tikkypeng 2001-09-19
  • 打赏
  • 举报
回复
Query1.Close;//这里有没有Close呢?
query1.Sql.Clear;
sqlstr:='select min(Group_ID) from students where 院=化学学院';
Query1.Sql.Add(sqlstr);
Query1.Open();
GroupNum:=Query1.fieldbyname('Group_ID').asinteger;
kerplayer 2001-09-19
  • 打赏
  • 举报
回复
你的数据库是什么?不支持min函数?那么order by Group_ID支持吗?
byrybye 2001-09-19
  • 打赏
  • 举报
回复
我看看
query1.close;
Query1.Sql.Clear;
sqlstr:='select min(Group_ID) from students where 院=化学学院';
Query1.Sql.Add(sqlstr);
Query1.Open();
GroupNum:=Query1.fieldbyname('Group_ID').asinteger;
这样就应该行了吧
如果后面的没错的话


nkzgj 2001-09-19
  • 打赏
  • 举报
回复
加了Close那句也不行。
用单步执行发现后面那段没问题,
还是sqlstr:='select min(Group_ID) from students where 院=化学学院';这句后面一Open就报错。
请问min的用法对不对?
tikkypeng 2001-09-19
  • 打赏
  • 举报
回复
Query1.Sql.Clear;
sqlstr:='select min(Group_ID) from students where 院=化学学院';
Query1.Sql.Add(sqlstr);
Query1.Open();
GroupNum:=Query1.fieldbyname('Group_ID').asinteger;

Query1.Close;  //需要增加Close
Query1.Sql.Clear;
sqlstr:='select Group_Order,姓名'+ComboBox3.Text+' from students where Group_ID='+inttostr(GroupNum);
Query1.Sql.Add(sqlstr);
Query1.Open();
nkzgj 2001-09-19
  • 打赏
  • 举报
回复
大家帮帮忙吧!
nkzgj 2001-09-19
  • 打赏
  • 举报
回复
请各位大侠看看这几句话有什么毛病:
Query1.Sql.Clear;
sqlstr:='select min(Group_ID) from students where 院=化学学院';
Query1.Sql.Add(sqlstr);
Query1.Open();
GroupNum:=Query1.fieldbyname('Group_ID').asinteger;

Query1.Sql.Clear;
sqlstr:='select Group_Order,姓名'+ComboBox3.Text+' from students where Group_ID='+inttostr(GroupNum);
Query1.Sql.Add(sqlstr);
Query1.Open();

执行后错误提示为‘Table is read only’,可写这几句话之前没有类似错误呀。
nkzgj 2001-09-18
  • 打赏
  • 举报
回复
to byrybye(BYRY):是我没说清楚,实际情况和你写的差不多:表内学生分若干系,每个系中又
包括若干组,每个组内有若干个学生。但是每个系内的组号不是从1往上排
也就是可能是这种情况:物理系1-9组,化学系10-23组,生物系24-31组..
现在查询条件包括:知道了系名,又知道了要选择的组是这个系中的第几组
(按A组B组C组D组E组F组...排列),要查出这一组学生的信息。
to zhuzhichao(竹之草):34-48使我假设的,实际操作中这个数可能是随机的呀,呵呵。
zenartus 2001-09-18
  • 打赏
  • 举报
回复
up
zhuzhichao 2001-09-18
  • 打赏
  • 举报
回复
1.
select * from student where Group_ID =
(select min(Group_ID) from student where Group_ID between 34 and 48);
2.
select * from student where Group_ID =
(select min(Group_ID) from student where Group_ID between 34 and 48
and Group_ID not in (select min(Group_ID) from student where Group_ID between 34 and 48));

byrybye 2001-09-18
  • 打赏
  • 举报
回复
问题不明确呀,什么意思??
组是怎么分的,和系有关系吗//
可以这样了
select * from students where gruop_id like(
select min(gruop_id) as min_id form
(select * from students where 院系名称 like '化学系'))
应该行,不过我也没试过,思路应该可以,
可能效率低

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧