В снежинке в чем разница между SELECT TOP и SELECT … предел

#snowflake-cloud-data-platform

Вопрос:

Есть ли разница между SELECT TOP n col и SELECT col ...LIMIT n

Оба, похоже, дают одни и те же результаты. Например:

 SELECT TOP 5 C_ACCTBAL FROM "SNOWFLAKE_SAMPLE_DATA"."TPCH_SF1"."CUSTOMER";

SELECT C_ACCTBAL FROM "SNOWFLAKE_SAMPLE_DATA"."TPCH_SF1"."CUSTOMER" LIMIT 5;
 

оба возвращаются:

 C_ACCTBAL
711.56
121.65
7498.12
2866.83
794.47
 

Ответ №1:

Согласно документации, никакой разницы нет

ВЕРХ и ПРЕДЕЛ эквивалентны.

https://docs.snowflake.com/en/sql-reference/constructs/top_n.html

— РЕДАКТИРОВАТЬ —

НО, как и сказал @Robert Long, LIMIT поддерживает СМЕЩЕНИЕ, а TOP-нет.

Комментарии:

1. LIMIT поддерживает использование СМЕЩЕНИЯ, в то TOP время как, насколько я знаю, нет.

2. Это вполне может быть. Я только что прочитал документацию. Просто из чистого интереса я проверю.

Ответ №2:

С базовым шаблоном использования в OP нет никакой разницы.

Однако LIMIT также поддерживается использование СМЕЩЕНИЯ, которое сначала пропускает строки.

Итак, мы могли бы:

 SELECT TOP 5 C_ACCTBAL FROM "SNOWFLAKE_SAMPLE_DATA"."TPCH_SF1"."CUSTOMER";
 

который возвращает

 C_ACCTBAL
711.56
121.65
7498.12
2866.83
794.47
 

..как и в ОП, но:

 SELECT C_ACCTBAL FROM "SNOWFLAKE_SAMPLE_DATA"."TPCH_SF1"."CUSTOMER" LIMIT 2 OFFSET 3;
 

будет возвращать

 C_ACCTBAL
2866.83
794.47