关于SQL操作的一些经验

1. 有一个规则关于group by的使用

SELECT PointNum, MAX(InsertTime) AS InsertTime FROM PointData GROUP BY PointNum

  所有的Select的字段,除聚合函数中的字段,都必须在Group by中出现,这个语句可以很好地查询依赖于2个字段限制的信息(一个作为Group by分组,一个作为聚合函数的参数),且查询结果只显示这两个字段,如果想要显示其他字段,如下操作使用LEFT JOIN

SELECT C.PointNum,C.PointState,C.PointBattery,C.GPSTime,C.GPSWd,C.GPSJd,C.SensorState,B.InsertTime
FROM (SELECT PointNum, MAX(InsertTime) AS InsertTime FROM PointData GROUP BY PointNum) B
LEFT JOIN PointData C ON B.InsertTime = C.InsertTime AND B.PointNum = C.PointNum

2. 查询结果相当于一个表,对于查询结果,可以直接使用  (SELECT ...) B,用B来表示这个查询结果。

3. AS的使用,AS在字段的重命名、添加新字段等方面用处很大,如

SELECT PointInfo.PointNum, PointInfo.PointName,'接收' as Direction,MsgLog.MsgContent,MsgLog.InsertTime
FROM MsgLog LEFT OUTER JOIN PointInfo ON MsgLog.PointNum = PointInfo.PointNum

可以成功在查询结果添加新的一列Direction,并且这个新列的所有值均为“接收”。  

原文地址:https://www.cnblogs.com/laojie4321/p/2494129.html