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中提示语法错误。可能是指令有些不同。非常感谢大家的帮助。二楼还指出了我题目表达上的错误, 展开
报警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中提示语法错误。可能是指令有些不同。非常感谢大家的帮助。二楼还指出了我题目表达上的错误, 展开
2个回答
展开全部
你说的查询内容根本无法实现.
要是像你说的
-----要选出“报警状态”的最后一次记录是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'
要是像你说的
-----要选出“报警状态”的最后一次记录是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'
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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'
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'
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询