我有以下疑问:
SELECT TOP 1
CASE WHEN latency=-1
THEN 'Down'
ELSE 'Up'
END AS status
FROM
@pings_temp
ORDER BY datetime DESC;
SELECT TOP 1
CASE WHEN latency=-1
THEN 'Down'
ELSE 'Up'
END AS status,
CASE WHEN latency=-1
THEN
(
SELECT TOP 1
datetime
FROM
@downtimes_temp
ORDER BY
datetime DESC
)
ELSE NULL
END AS datetime
FROM
@pings_temp
ORDER BY datetime DESC;
第一个应该只产生' Up ',第二个应该在第一列产生' Up ',在第二列产生 NULL 。
但是,这不会发生。第一个查询确切地执行它应该如何,但是将第二列添加到SELECT会使查询变得狂暴,导致它从看似随机的列中读出' Down '和日期。
答案 0 :(得分:3)
第二种情况中的错误可能是由ORDER BY子句引起的,因为引擎无法评估NULL值的顺序。