SQL数据库问题:有八个设备的数据保存在数据库里,如果我要寻找每一个设备的最后一条数据, 50

能不能用一条寻找语句要解决... 能不能用一条寻找语句要解决 展开
 我来答
wyd52x
2016-09-05 · TA获得超过1943个赞
知道小有建树答主
回答量:520
采纳率:0%
帮助的人:635万
展开全部
如果支持子查询的话:
Select s.* From 设备数据表 as s
Inner Join
(Select 设备名称或者id,LastTime=Max(创建时间) From 设备数据表 Group By 设备名称或者id) as r
On s.设备名称或者id =r.设备名称或者id And s.创建时间=r.LastTime

如果情况复杂请给出表结构,并追问
追问
情况不复杂 ,只是还看不懂你给的。我的查询一个设备的语句:$q = "SELECT OTH_OTHID, OTH_OILTANKNO, OTH_OILWEIGHT FROM LiquidLevelTemperatureInformation WHERE OTH_OILTANKNO='T11410181-2' ORDER BY OTH_OTHID DESC";
追答
语句不复杂,就是个子查询加表连接
先通过分组取得每个设备的最后一条数据(最大值):

Select OTH_OILTANKNO ,OTH_OTHID=Max(OTH_OTHID) From LiquidLevelTemperatureInformation Group By OTH_OILTANKNO

然后再用原表来连接这个结果,以这个结果数据作为条件

如果一条一条的找 就相当于
SELECT OTH_OTHID, OTH_OILTANKNO, OTH_OILWEIGHT FROM LiquidLevelTemperatureInformation WHERE OTH_OILTANKNO='T11410181-2' And OTH_OTHID =@maxId
步骤1:

Declare @maxId varchar(50)
SELECT top 1 @maxId =OTH_OTHID FROM LiquidLevelTemperatureInformation WHERE OTH_OILTANKNO='T11410181-2' ORDER BY OTH_OTHID DESC

步骤2:

SELECT OTH_OTHID, OTH_OILTANKNO, OTH_OILWEIGHT FROM LiquidLevelTemperatureInformation WHERE OTH_OILTANKNO='T11410181-2 And OTH_OTHID =@maxId

但,因为你需要批量一次性处理完,所以得用表连接,以结果集来匹配,最终结果是:

Select s.OTH_OTHID, s.OTH_OILTANKNO,s.OTH_OILWEIGHT From LiquidLevelTemperatureInformation as s
Inner Join (Select OTH_OILTANKNO ,OTH_OTHID=Max(OTH_OTHID) From LiquidLevelTemperatureInformation Group By OTH_OILTANKNO) as r
On s.OTH_OILTANKNO='T11410181-2' And s.OTH_OILTANKNO=r.OTH_OILTANKNO And s.OTH_OTHID=r.OTH_OTHID
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式