关于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,并且这个新列的所有值均为“接收”。