一条查询语句,不知道怎么写

高原山顶的大风车 2004-07-23 04:46:24
现有表usergroup,数据为:
g_id g_name
--------------
1 aaa
2 bbb
3 ccc
4 ddd

有表user,数据为:
u_id g_id u_name
-----------------
1 1 u1
2 1 u2
3 1 u3
4 2 u4
5 2 u5
6 3 u7
7 3 u8
8 4 u9

现在要求:
取出前两个组的组名(usergroup.g_name)及组下的用户名(user.u_name)

使用环境为ASP页面。


还有就是能否通过存储过程的方式来实现呢?

...全文
93 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
哈哈
zjcxc(邹建) 高人呀

你写的查询正确,正好适合要求。


谢谢大家了!
zjcxc 2004-07-23
  • 打赏
  • 举报
回复
--测试

--测试数据
create table usergroup(g_id int,g_name varchar(10))
insert usergroup select 1,'aaa'
union all select 2,'bbb'
union all select 3,'ccc'
union all select 4,'ddd'

create table [user](u_id int,g_id int,u_name varchar(10))
insert [user] select 1,1,'u1'
union all select 2,1,'u2'
union all select 3,1,'u3'
union all select 4,2,'u4'
union all select 5,2,'u5'
union all select 6,3,'u7'
union all select 7,3,'u8'
union all select 8,4,'u9'
go

--查询
select b.g_name,a.u_name
from(
select a.* from [user] a
where (
select sum(1) from [user]
where g_id=a.g_id and u_id<=a.u_id
)<=2 --每组取前两个
)a join(
select top 2 * from usergroup
)b on a.g_id=b.g_id
go

--删除测试
drop table [user],usergroup

/*--测试结果

g_name u_name
---------- ----------
aaa u1
aaa u2
bbb u4
bbb u5

(所影响的行数为 4 行)
--*/
zjcxc 2004-07-23
  • 打赏
  • 举报
回复

select b.g_name,a.u_name
from(
select a.* from [user] a
where (
select sum(1) from [user]
where g_id=a.g_id and u_id<=a.u_id
)<=2 --每组取前两个
)a join(
select top 2 * from usergroup
)b on a.g_id=b.g_id
  • 打赏
  • 举报
回复
不好意思,上次表述有错误
应该是:
现在要求:
取出前两个组的组名(usergroup.g_name)及组下的前两位用户名(user.u_name)

我已经按
--上面未取出组名,引用1楼的
select b.g_name,a.u_name
from user a
join
(select top 2 g_id from usergroup) b
on a.g_id=b.g_id
做了测试,返回结果为组下的所有用户名。
huwgao 2004-07-23
  • 打赏
  • 举报
回复
--上面未取出组名,引用1楼的
select b.g_name,a.u_name
from user a
join
(select top 2 g_id from usergroup) b
on a.g_id=b.g_id
huwgao 2004-07-23
  • 打赏
  • 举报
回复
select * from user
where g_id in (select top 2 g_id from usergroup)
zheninchangjiang 2004-07-23
  • 打赏
  • 举报
回复
select a.* from user a
join (select top 2 * from usergroup) b on a.g_id=b.g_id

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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