В общем случае строки в наборе результатов запроса на выборку начинаются с 0. Используя предложение смещения , мы можем решить, откуда следует рассматривать выходные данные. Например, если мы выберем смещение равным 0, результат будет как обычно, а если мы выберем смещение равным 5, результат начнется с пятой строки.
Синтаксис
Ниже приводится синтаксис предложения смещения в Impala.
select data from table_name Group BY col_name;
пример
Предположим, у нас есть таблица с именем customer в базе данных my_db, и ее содержимое выглядит следующим образом:
[quickstart.cloudera:21000] > select * from customers; Query: select * from customers +----+----------+-----+-----------+--------+ | id | name | age | address | salary | +----+----------+-----+-----------+--------+ | 3 | kaushik | 23 | Kota | 30000 | | 6 | Komal | 22 | MP | 32000 | | 1 | Ramesh | 32 | Ahmedabad | 20000 | | 5 | Hardik | 27 | Bhopal | 40000 | | 2 | Khilan | 25 | Delhi | 15000 | | 8 | ram | 22 | vizag | 31000 | | 9 | robert | 23 | banglore | 28000 | | 7 | ram | 25 | chennai | 23000 | | 4 | Chaitali | 25 | Mumbai | 35000 | +----+----------+-----+-----------+--------+ Fetched 9 row(s) in 0.51s
Вы можете расположить записи в таблице в порядке возрастания их идентификаторов и ограничить количество записей до 4, используя условия limit и order by, как показано ниже.
Query: select * from customers order by id limit 4 +----+----------+-----+-----------+--------+ | id | name | age | address | salary | +----+----------+-----+-----------+--------+ | 1 | Ramesh | 32 | Ahmedabad | 20000 | | 2 | Khilan | 25 | Delhi | 15000 | | 3 | kaushik | 23 | Kota | 30000 | | 4 | Chaitali | 25 | Mumbai | 35000 | +----+----------+-----+-----------+--------+ Fetched 4 row(s) in 0.64s
Ниже приведен пример предложения смещения . Здесь мы получаем записи в таблице клиентов в порядке их идентификаторов и печатаем первые четыре строки, начиная с 0- й строки.
[quickstart.cloudera:21000] > select * from customers order by id limit 4 offset 0;
При выполнении вышеупомянутый запрос дает следующий результат.
Query: select * from customers order by id limit 4 offset 0 +----+----------+-----+-----------+--------+ | id | name | age | address | salary | +----+----------+-----+-----------+--------+ | 1 | Ramesh | 32 | Ahmedabad | 20000 | | 2 | Khilan | 25 | Delhi | 15000 | | 3 | kaushik | 23 | Kota | 30000 | | 4 | Chaitali | 25 | Mumbai | 35000 | +----+----------+-----+-----------+--------+ Fetched 4 row(s) in 0.62s
Таким же образом вы можете получить четыре записи из таблицы клиентов, начиная со строки со смещением 5, как показано ниже.