大虾们帮忙看条SQL语句哇
1.SELECT * FROM [Logging].[dbo].[ExceptionLog]
WHERE (LogId IN(SELECT MIN(LogId) AS Expr1 FROM [Logging].[dbo].[ExceptionLog]
AS ExceptionLog_1 GROUP BY StackTrace ) )
2. SELECT * FROM [Logging].[dbo].[ExceptionLog] WHERE
(LogId IN(SELECT MIN(LogId) AS Expr1 FROM [Logging].[dbo].[ExceptionLog]
AS ExceptionLog_1 where( (CreateDate<'2012-05-17' ) or
(CreateDate='2012-05-17' and CreateTime<='15:02:21.9070000'))
GROUP BY StackTrace))
3. SELECT * FROM [Logging].[dbo].[ExceptionLog] WHERE
(LogId IN(SELECT MIN(LogId) AS Expr1 FROM [Logging].[dbo].[ExceptionLog]
AS ExceptionLog_1 where ((CreateDate>'2012-05-17' )
or (CreateDate='2012-05-17' and CreateTime>'15:02:21.9070000'))
GROUP BY StackTrace))
为啥1的执行结果不等于2、3两条执行结果的总和呢?
[解决办法]
语句一是根据StackTrace分组取所有数据的最小ID,语句二是根据StackTrace分组,在指定时间范围内取每组最小ID,语句三跟语句二不完全相反,你语句二CreateDate<'2012-05-17',语句三CreateDate>'2012-05-17'
那么你忽略了CreateDate='2012-05-17',明白了吧??
[解决办法]