select 语句怎么写?困扰很久了

phoenixluo 2005-07-05 04:31:20
有emp 表

deptID empName
1 张三
1 李四
1 王五
2 Bill
2 leo
2 CC


要实现的效果的是每个部门的第一条记录如

deptID empName
1 张三
2 Bill


怎么写啊?
...全文
103 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
phoenixluo 2005-07-05
  • 打赏
  • 举报
回复
明白了,谢谢各位.
paoluo 2005-07-05
  • 打赏
  • 举报
回复
直接一句SQL就可以啊,不需要写那么麻烦的。
qiaolingli 2005-07-05
  • 打赏
  • 举报
回复
不是吧?
这么麻烦?????
vivianfdlpw 2005-07-05
  • 打赏
  • 举报
回复
多输了一列:(
--创建测试环境
create table #
(
deptID int,empName varchar(20)
)
insert #(deptID,empName) values(1,'张三')
insert #(deptID,empName) values(1,'李四')
insert #(deptID,empName) values(1,'王五')
insert #(deptID,empName) values(2,'Bill')
insert #(deptID,empName) values(2,'leo')
insert #(deptID,empName) values(2,'CC')

--测试
declare @tb table(ID int identity,deptID int,empName varchar(20))
insert @tb(deptID,empName) select * from #
select deptID,empName from @tb A where not exists(select 1 from @tb where ID<A.ID and deptID=A.deptID)

--删除测试环境
drop table #

--结果
/*


deptID empName
----------- --------------------
1 张三
2 Bill

(所影响的行数为 2 行)
*/
vivianfdlpw 2005-07-05
  • 打赏
  • 举报
回复
--创建测试环境
create table #
(
deptID int,empName varchar(20)
)
insert #(deptID,empName) values(1,'张三')
insert #(deptID,empName) values(1,'李四')
insert #(deptID,empName) values(1,'王五')
insert #(deptID,empName) values(2,'Bill')
insert #(deptID,empName) values(2,'leo')
insert #(deptID,empName) values(2,'CC')

--测试
declare @tb table(ID int identity,deptID int,empName varchar(20))
insert @tb(deptID,empName) select * from #
select ID,deptID,empName from @tb A where not exists(select 1 from @tb where ID<A.ID and deptID=A.deptID)

--删除测试环境
drop table #

--结果
/*


ID deptID empName
----------- ----------- --------------------
1 1 张三
4 2 Bill

(所影响的行数为 2 行)
*/
paoluo 2005-07-05
  • 打赏
  • 举报
回复
--建立测试环境
Create Table emp
(deptID Int,
empName Nvarchar(10))
Insert emp Values(1, N'张三')
Insert emp Values(1, N'李四')
Insert emp Values(1, N'王五')
Insert emp Values(2, N'Bill')
Insert emp Values(2, N'leo')
Insert emp Values(2, N'CC')
--测试
Select * from emp A Where empName=(Select Top 1 empName from emp Where deptID=A.deptID)
--删除测试环境
Drop Table emp
--结果
/*
deptID empName
1 张三
2 Bill
*/
paoluo 2005-07-05
  • 打赏
  • 举报
回复
没有必要写的那么麻烦的。
wangdehao 2005-07-05
  • 打赏
  • 举报
回复
---如果非要第一条的话:
select id=identity(int,1,1),* into #t from emp

select empName,deptID from #t a where not exists(select * from #t where deptID=a.deptID and id<a.id)

or
select a.empName,a.deptID from #t a right join (select min(id) as id,deptID from #t group by deptID)b on a.deptID=b.deptID
paoluo 2005-07-05
  • 打赏
  • 举报
回复
Select * from emp A Where empName=(Select Top 1 empName from emp Where deptID=A.deptID)
wangdehao 2005-07-05
  • 打赏
  • 举报
回复
---如果不是第一条记录的话(随便来条的话)
select min(empName)as empName,deptID from emp group by deptID

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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