如何得到不同的记录

Blade7 2008-07-10 06:05:10
access表结构如下:

Id UserId Name
1 2 abc
2 3 dafdf
3 2 dkkfdodf
4 2 fdff
5 3 opopii

我想得到UserId不同的记录,即这样的结果:
Id UserId Name
1 2 abc
2 3 dafdf

请问如何写sql语句,最好能兼容mssql?
...全文
97 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Blade7 2008-07-12
  • 打赏
  • 举报
回复

感谢 wwwwb 的帮助,以下sql语句的结果正是我要的。

select a.* from tt a inner join
(select [userid],min(id) as mi from tt group by [userid]) b
on a.[userid]=b.[userid] and a.id=b.mi

已给分。
wwwwb 2008-07-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Blade7 的回复:]
不好意思,还想问,加入top怎么处理,比如我想要头5个不重复的用户的记录?
[/Quote]
结果贴出来看看
上述SQL语句ACCESS、SSQL SERVER都 适用
wwwwb 2008-07-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 Blade7 的帖子:]
access表结构如下:

Id UserId Name
1 2 abc
2 3 dafdf
3 2 dkkfdodf
4 2 fdff
5 3 opopii

我想得到UserId不同的记录,即这样的结果:
Id UserId Name
1 2 abc
2 3 dafdf

请问如何写sql语句,最好能兼容mssql?
[/Quote]
select a.* from tt a inner join
(select [userid],min(id) as mi from tt group by [userid]) b
on a.[userid]=b.[userid] and a.id=b.mi
Blade7 2008-07-10
  • 打赏
  • 举报
回复
先多谢 ccssddnnhelp 的回复。

可能是我的表述不清楚,我举个例子:

我有个网站的留言本,某UserId为2的用户发了很多个留言,某UserId为3的用户也发了一些留言……依次类推,我要的结果是:

通过sql取出每个用户的第一条发言,也就是结果集中用户不能重复,不是记录不能重复。

可是上面 ccssddnnhelp 给的两个sql语句得到的结果中UserId为2的和UserId为3的用户记录却多次出现……
ccssddnnhelp 2008-07-10
  • 打赏
  • 举报
回复

不好意思,还想问,加入top怎么处理,比如我想要头5个不重复的用户的记录?

select top 5 * from (
select [Name],UserId,min(Id) as mid
from access表
group by [Name],UserId
)
order by mid
.
==== ====

.
贴子分数<20:对自已的问题不予重视。
贴子大量未结:对别人的回答不予尊重。
.
ccssddnnhelp 2008-07-10
  • 打赏
  • 举报
回复

兼容mssql?

select [Name],UserId,min(Id)
from access表
group by [Name],UserId


兼容各种数据库,但建议少用name, id 这种极有可能是保留字的名字。.
==== ====

.
贴子分数<20:对自已的问题不予重视。
贴子大量未结:对别人的回答不予尊重。
.
ccssddnnhelp 2008-07-10
  • 打赏
  • 举报
回复

ACCESS ADO访问时是JET-SQL

JET-SQL 参考 (如安装OFFICE选择帮助,则直接访问本机)
C:\Program Files\Common Files\Microsoft Shared\OFFICE11\2052\JETSQL40.CHM

JET-SQL 参考
http://download.csdn.net/source/351771

Access使用的是Jet-SQL。

JET SQL 帮助(jet4 access2000)下载地址
http://www.access911.net/index.asp?board=8&recordid=75FAB71E&tt= .
==== ====

.
贴子分数<20:对自已的问题不予重视。
贴子大量未结:对别人的回答不予尊重。
.
ccssddnnhelp 2008-07-10
  • 打赏
  • 举报
回复

select [Name],UserId,min(Id)
from access表
group by [Name],UserId
.
==== ====

.
贴子分数<20:对自已的问题不予重视。
贴子大量未结:对别人的回答不予尊重。
.
Blade7 2008-07-10
  • 打赏
  • 举报
回复
不好意思,还想问,加入top怎么处理,比如我想要头5个不重复的用户的记录?
Blade7 2008-07-10
  • 打赏
  • 举报
回复
补充说明:即把重复出现的用户的记录剔除掉

7,713

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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