SQL去重复语句或查询最后一次记录

表“报警记录”中有下面几个组报警ID报警名称报警时间报警状态操作员1AAA2010-1-112:12:32OK1232BBB2010-1-120:12:22ERR1233... 表“报警记录”中有下面几个组
报警ID 报警名称 报警时间 报警状态 操作员
1 AAA 2010-1-1 12:12:32 OK 123
2 BBB 2010-1-1 20:12:22 ERR 123
3 CCC 2010-1-2 12:12:32 OK 123
4 DDD 2010-1-2 20:12:22 ERR 123
5 AAA 2010-1-3 12:12:32 OK 123
6 BBB 2010-1-3 13:12:22 ERR 123
7 CCC 2010-1-3 14:12:32 OK 123
8 DDD 2010-1-3 20:12:22 ERR 123
9 AAA 2010-1-1 12:12:32 OK 123
10 BBB 2010-1-1 20:12:22 ERR 567
11 CCC 2010-1-2 12:12:32 OK 567
12 DDD 2010-1-2 20:12:22 ERR 567
13 AAA 2010-1-4 12:12:32 OK 567
14 GGG 2010-1-4 13:12:22 ERR 567
15 CCC 2010-1-4 14:12:32 OK 567
16 KKK 2010-1-4 20:12:22 ERR 567
17 CCC 2010-2-3 14:12:32 OK 123
18 DDD 2010-2-3 20:12:22 ERR 123
19 AAA 2010-2-8 12:12:32 OK 567
20 BBB 2010-2-9 20:12:22 ERR 567
21 CCC 2010-2-12 12:12:32 ERR 567
22 DDD 2010-2-12 20:12:22 ERR 123
23 LLL 2010-3-4 12:12:32 OK 123
24 BBB 2010-3-4 13:12:22 ERR 123
25 CCC 2010-3-4 14:12:32 OK 123
26 FFF 2010-3-4 20:12:22 ERR 567
问题1现在要选出“报警状态”的最后一次记录是ERR的内容,并以“报警ID”降序排例,且“报警名称”中不重复的项目,应该怎么写SQL语句?
问题2选出“操作员”内容是“123”或是“567”的上述内容

问题1的正确结果是:
26 FFF 2010-3-4 20:12:22 ERR 567
24 BBB 2010-3-4 13:12:22 ERR 123
22 DDD 2010-2-12 20:12:22 ERR 123
16 KKK 2010-1-4 20:12:22 ERR 567
14 GGG 2010-1-4 13:12:22 ERR 567
问题2的正确结果是:
24 BBB 2010-3-4 13:12:22 ERR 123
22 DDD 2010-2-12 20:12:22 ERR 123
和:
26 FFF 2010-3-4 20:12:22 ERR 567
16 KKK 2010-1-4 20:12:22 ERR 567
14 GGG 2010-1-4 13:12:22 ERR 567
首先感谢大家对此的关心,我的题目中‘且“报警名称”中不重复的项目’是多余且干扰了个位。不好意思。
下面两位朋友的回答基本一样但在我的SQL语句中返回了错误的信息。是不是V+ACCESS的SQL语法上有些细节的差别
请各位高手再帮我看看 。
经过努力在下面两位的指点下终于OK了,下面的指令有点小问题就是
select * from table where 报警ID in (select max(报警ID) from table group by 报警名称 where 报警状态='ERR')
应该改成
select * from table where 报警ID in (select max(报警ID) from table group by 报警名称)and 报警状态='ERR' order by 报警ID desc
原句在VB+ACCESS的SQL中提示语法错误。可能是指令有些不同。非常感谢大家的帮助。二楼还指出了我题目表达上的错误,
展开
 我来答
zhang198679
2010-05-01 · TA获得超过118个赞
知道答主
回答量:97
采纳率:100%
帮助的人:91.9万
展开全部
你说的查询内容根本无法实现.
要是像你说的

-----要选出“报警状态”的最后一次记录是ERR的内容,并以“报警ID”降序排例,且“报警名称”中不重复的项 ------

只有一条记录
26 FFF 2010-3-4 20:12:22 ERR 567

如果说是取每个报警名称的“报警状态”的最后一次记录是ERR的内容,并以“报警ID”降序排例,且“报警名称”中不重复的项
记录如下
26 FFF 2010-3-4 20:12:22 ERR 567
24 BBB 2010-3-4 13:12:22 ERR 123
22 DDD 2010-2-12 20:12:22 ERR 123
21 CCC 2010-2-12 12:12:32 ERR 567--是不是少写了
16 KKK 2010-1-4 20:12:22 ERR 567
14 GGG 2010-1-4 13:12:22 ERR 567
语句1 select * from table where 报警ID in (select max(报警ID) from table group by 报警名称 where 报警状态='ERR')

语句2 select * from table where 报警ID in (select max(报警ID) from table group by 报警名称 where 报警状态='ERR') and 操作员='123'
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lzp4881
2010-05-01 · TA获得超过2394个赞
知道大有可为答主
回答量:2825
采纳率:0%
帮助的人:3005万
展开全部
1.
select * from table where 报警ID in (select max(报警ID) from table group by 报警名称 where 报警状态='ERR')

2.
select * from table where 报警ID in (select max(报警ID) from table group by 报警名称 where 报警状态='ERR') and 操作员='123'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式