如下的SQL语句:
SELECT ID, LastModified,
(SELECT TOP 1 WorkType
FROM [Works]
WHERE StartTime >= (Dateadd(hour, 16, (SELECT TOP 1 StartTime FROM [Logs] WHERE Number = T.Number ORDER BY T.[LastModified],ID))
ORDER BY [LastModified] DESC, ID) AS WorkType
FROM [MyTable] AS T
WHERE ID IN ( 5716, 5715, 5714, 5713, 5712, 5711, 5710, 5709, 5708)
该语句的执行结果,子查询取得的WorkType字段是有正确的值的,但是,如果删除条件中的部分ID,比如删除5712之后的ID,再执行,本来应该有值的记录,WorkType却为空值了。
按说,SQL中的条件只会影响取到的记录数量,不会影响子查询的值呀。这是怎么回事?能否有人给我解惑?多谢了
按照SQL 语句的执行顺序,select子句是最后执行的,应该是where子句影响你的查询结果
不管执行顺序如何,子查询的取值结果都不应该会受到SQL语句条件的影响啊
@戒焦戒躁: 我的意思是你去掉的条件影响了查询结果