SELECT
Возвращает набор данных из YDB.
Примеры
SELECT "Hello, world!";
SELECT 2 + 2;
FROM
Источник данных для SELECT
. В качестве аргумента может принимать имя таблицы, результат другого SELECT
или именованное выражение. Между SELECT
и FROM
через запятую указываются имена столбцов из источника или *
для выбора всех столбцов.
Примеры
SELECT key FROM my_table;
SELECT * FROM
(SELECT value FROM my_table);
$table_name = "my_table";
SELECT * FROM $table_name;
WHERE
Фильтрация строк в результате SELECT
по условию.
Пример
SELECT key FROM my_table
WHERE value > 0;
ORDER BY
Сортировка результата SELECT
:
ASC
— по возрастанию. Применяется по умолчанию.DESC
— по убыванию.
Несколько критериев сортировки будут применены слева направо.
Примечание
Без ORDER BY
запрос SELECT FROM
возвращает несортированные данные и не сохраняет порядок из исходной таблицы. В подзапросах использование ORDER BY
допускается только вместе с LIMIT
.
Пример
SELECT key, string_column
FROM my_table
ORDER BY key DESC, LENGTH(string_column) ASC;
Также ORDER BY
может использоваться для сортировки в механизме оконных функций.
LIMIT и OFFSET
LIMIT
ограничивает вывод указанным количеством строк. По умолчанию вывод не ограничен.
OFFSET
указывает отступ от начала (в строках). По умолчанию — ноль.
Примеры
SELECT key FROM my_table
LIMIT 7;
SELECT key FROM my_table
LIMIT 7 OFFSET 3;
SELECT key FROM my_table
LIMIT 3, 7; -- эквивалентно предыдущему примеру
DISTINCT
Выбор уникальных строк.
Примечание
Применение DISTINCT
к вычислимым значениям на данный момент не реализовано. С этой целью можно использовать подзапрос или выражение GROUP BY ... AS ...
.
Пример
SELECT DISTINCT value -- только уникальные значения из таблицы
FROM my_table;
Также DISTINCT
может использоваться для применения агрегатных функций только к уникальным значениям. Подробнее читайте в разделе GROUP BY.
UNION ALL
Конкатенация результатов нескольких SELECT
.
Пример
SELECT 1 AS x
UNION ALL
SELECT 2 AS y
UNION ALL
SELECT 3 AS z;
WITHOUT
Исключение столбцов из результата SELECT *
.
Примеры
SELECT * WITHOUT foo, bar FROM my_table;
PRAGMA simplecolumns;
SELECT * WITHOUT t.foo FROM my_table AS t
CROSS JOIN (SELECT 1 AS foo) AS v;
FROM ... SELECT ...
Перевернутая форма записи, в которой сначала указывается источник данных, а затем — операция.
Примеры
FROM my_table SELECT key, value;
FROM a_table AS a
JOIN b_table AS b
USING (key)
SELECT *;
SELECT по вторичному индексу
Чтобы сделать запрос SELECT
по вторичному индексу, используйте конструкцию:
SELECT *
FROM TableName VIEW IndexName
WHERE …
Примеры
-
Выбрать все поля из таблицы
series
по индексуviews_index
с условиемviews >= someValue
:SELECT series_id, title, info, release_date, views, uploaded_user_id FROM series VIEW views_index WHERE views >= someValue
-
Сделать
JOIN
таблицseries
иusers
c заданным полемuserName
по индексамusers_index
иname_index
соответственно:SELECT t1.series_id, t1.title FROM series VIEW users_index AS t1 INNER JOIN users VIEW name_index AS t2 ON t1.uploaded_user_id == t2.user_id WHERE t2.name == userName;
FROM AS_TABLE
Обращение к именованным выражениям как к таблицам с помощью функции AS_TABLE
.
AS_TABLE($variable)
позволяет использовать значение $variable
в качестве источника данных для запроса. При этом переменная $variable
должна иметь тип List<Struct<...>>
.
Пример
$data = AsList(
AsStruct(1u AS Key, "v1" AS Value),
AsStruct(2u AS Key, "v2" AS Value),
AsStruct(3u AS Key, "v3" AS Value));
SELECT Key, Value FROM AS_TABLE($data);