一个分组查询的语句问题!

guangyuxuan 2008-04-22 05:53:27
小弟又来向各位大侠求救了!
比如说现在有表TAB我想查询表中所有vid小于等于3的而且id还不能重复的数据,也就是说我查询出来的数据是类似TAB2表一样的,请各位大侠给我指条明路吧!
TAB
id vid name text
1 1 a aa
2 1 b bb
3 1 c cc
1 2 d dd
2 3 e ee

TAB2
id vid name text
1 2 d dd
2 3 e ee
3 1 c cc
...全文
67 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
guangyuxuan 2008-04-23
  • 打赏
  • 举报
回复
我尝试一下4楼的方法吧
guangyuxuan 2008-04-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dobear_0922 的回复:]
SQL codeselect * from TAB
where vid<=3 not exists(select 1 from TAB T where id=TAB.id and vid>TAB.vid)
[/Quote]

对不起,这个方法我试了一下好像不行啊,还是全部的数据都取出来了
RoverX 2008-04-22
  • 打赏
  • 举报
回复
declare @b table(id varchar(20),vid varchar(10),name varchar(10),text varchar(10) )
insert @b
select '1','1','a','aa'
union all
select '2','1','b','bb'
union all
select '3','1','c','cc'
union all
select '1','2','d','dd'
union all
select '2','3','e','ee'

SELECT a.* FROM @b a
INNER JOIN
(SELECT id,vid=max(vid) FROM @b GROUP BY id) b
ON a.id=b.id and a.vid=b.vid ORDER BY 1

id vid name text
-------------------- ---------- ---------- ----------
1 2 d dd
2 3 e ee
3 1 c cc
dobear_0922 2008-04-22
  • 打赏
  • 举报
回复
select * from TAB
where vid<=3 not exists(select 1 from TAB T where id=TAB.id and vid>TAB.vid)
dobear_0922 2008-04-22
  • 打赏
  • 举报
回复
错了,我再看看
dobear_0922 2008-04-22
  • 打赏
  • 举报
回复
--try
select * from TAB
where not exists(select 1 from TAB T where id=TAB.id and vid>TAB.vid)

27,580

社区成员

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

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