Sql server 未从子查询中选择结果

Sql server 未从子查询中选择结果,sql-server,Sql Server,我有下表,我执行这个查询期望得到201705 SELECT top 1 TIME FROM ( SELECT TOP 3 TIME FROM TABLE WHERE TIME >= 201703 ) t Order by TIME desc 然而,我得到201712 TIME 201605 201606 201607 201608 201609 201610 201611 201612 201701 201702 201703 201704 201705 2017

我有下表,我执行这个查询期望得到
201705

SELECT top 1 TIME FROM
(
    SELECT TOP 3 TIME
    FROM TABLE
    WHERE TIME >= 201703
) t
Order by TIME desc
然而,我得到201712

TIME
201605
201606
201607
201608
201609
201610
201611
201612
201701
201702
201703
201704
201705
201706
201707
201708
201709
201710
201711
201712

您不需要子查询,但无论何时使用TOP(n),都需要使用orderby

SELECT TOP(1) [TIME]
FROM TABLE
WHERE [TIME] >= 201703
ORDER BY [TIME] DESC
“时间”是T-SQL中使用的一个词(作为数据类型),因此请使用[]或“”,以确保它不会被误解。我不建议将“日期”或“时间”作为列名

如果它是需要的第三个最新条目,请尝试此项

SELECT TOP (1) [TIME]
FROM (
    SELECT TOP (3) [TIME]
    FROM TABLE
    WHERE TIME >= 201703
    ORDER BY [TIME] DESC
) t
ORDER BY [TIME] ASC

标记您正在使用的dbms,该查询是特定于产品的。将order by放入子查询中。添加一些示例表数据和预期结果-作为格式化文本(而不是图像)。如果201712不是您想要的结果,预期结果是什么?为什么不遵循@Sankar Raj的建议?这就是问题所在answer@TriV好吧,没有明确的行动告诉我们这是一个猜测。也许你是对的。是的,我想买第三个201705。