我使用的是数据库中的一个名为CITY的表,下面是城市名称。城市名称:德里、孟买、帕特纳、维贾亚瓦达、帕纳吉、提鲁凡南塔普兰、钦奈和加尔各答。
订单:
Select NAME from CITY ORDER BY LEN(NAME)产出:德里、帕特纳、帕纳吉、孟买、加尔各答、钦奈、维贾亚瓦达、Tiruvananthapuram
排名前3位,订购
Select TOP 3 NAME from CITY ORDER BY LEN(NAME)产出:德里、帕特纳、孟买
我的问题是,为什么不德里,帕特纳和帕纳吉。为什么前三名选择的是第四项而不是第三项?
发布于 2019-07-04 07:59:36
这是因为Panaji和Mumbai都有6个字符长,它们都符合TOP 3子句中第三个位置的条件。SQL Server可以自由返回Panaji或孟买,而不违反标准,而且绝对不能保证它在任何特定时间返回哪个城市。
要处理领带,您可以按子句的顺序明确指定附加标准,例如:
ORDER BY LEN(name), name -- order by length
-- if there is a tie then by name发布于 2019-07-04 08:05:01
这是一个原因之一,与领带关键字被引入与顶部子句。
在不使用关键字的情况下,您将获得与之匹配的结果的随机结果。就像你在这里看到的,孟买和帕纳吉的长度是一样的,所以他们中的任何一个都有可能被归还。使用关键字时,您将看到4个结果返回(这两个结果都包括在内)。
https://stackoverflow.com/questions/56883218
复制相似问题