group by语句怎么不出现select语句中的字段?
举例如下
设备表:
检修记录id,设备id,检修时间,检修员(检修人不固定)
select 设备id,max(检修时间)最后检修时间 from 设备表 group by 设备id。
得出这样的结果
设备1,最后检修时间
设备2,最后检修时间
设备3,最后检修时间
我想要的是结果是(带最后一次检修的检修员):
设备1,最后检修时间,张三
设备2,最后检修时间,李四
设备3,最后检修时间,王五
如果这样写语句:select 设备id,max(检修时间)检修时间,检修员 from 设备表 group by 设备id,检修员。结果是:如果李四也检修过设备1,就会把李四的最后一次检修的设备1也列出来。设备1就出现两个最后检修时间,显然不是我想要的。怎样写SQL语句?
------解决方案--------------------select a.* from 设备表 a join
(
select 设备id,max(检修时间)最后检修时间 from 设备表 group by 设备id
) b
on a.设备id= b.设备id and a.检修时间 = b.最后检修时间
楼主,预计这个语句的结果就是你要的,请查收
------解决方案--------------------
select 设备id,检修时间 最后检修时间,检修员
from 设备表 as a
where 检修时间=(select max(检修时间) from 设备表 as b where b.设备id=a.设备id )
------解决方案--------------------select a.设备id,a.检修时间,a.检修员 from 设备表 a ,( select 设备id,max(检修时间) as 最后检修时间 from 设备表 group by 设备id) b
where a.设备id= b.设备id and a.检修时间 = b.最后检修时间
------解决方案--------------------
Select * From 设备表 As a
Where Not Exists(Select 1 from 设备表 As x
Where x.设备id=a.设备id
And x.检修时间>a.检修时间
)