#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