Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
mysql:functions:row_number [2021/07/09 22:09] werwolf |
mysql:functions:row_number [2023/01/12 12:18] (текущий) |
||
|---|---|---|---|
| Строка 7: | Строка 7: | ||
| Ниже показан синтаксис функции ROW_NUMBER(): | Ниже показан синтаксис функции ROW_NUMBER(): | ||
| - | <code> | + | <code sql> |
| ROW_NUMBER() OVER (<partition_definition> <order_definition>) | ROW_NUMBER() OVER (<partition_definition> <order_definition>) | ||
| </code> | </code> | ||
| Строка 25: | Строка 25: | ||
| ==== order_definition ==== | ==== order_definition ==== | ||
| - | order_definition синтаксически выглядит следующим образом :<code> | + | order_definition синтаксически выглядит следующим образом :<code sql> |
| ORDER BY <expression> [ASC|DESC],[{,<expression>}...] | ORDER BY <expression> [ASC|DESC],[{,<expression>}...] | ||
| </code> | </code> | ||
| Строка 34: | Строка 34: | ||
| Давайте использовать таблицу products из примера базы данных для демонстрации: | Давайте использовать таблицу products из примера базы данных для демонстрации: | ||
| + | |||
| + | {{ :mysql:functions:funktsiya-row_number-v-mysql.jpg?nolink |}} | ||
| ==== 1) Присвоение последовательных номеров строкам ==== | ==== 1) Присвоение последовательных номеров строкам ==== | ||
| - | Следующий оператор использует функцию ROW_NUMBER() для назначения последовательного номера каждой строке таблицы products:<code> | + | Следующий оператор использует функцию ROW_NUMBER() для назначения последовательного номера каждой строке таблицы products: |
| + | <code sql> | ||
| SELECT | SELECT | ||
| ROW_NUMBER() OVER ( | ROW_NUMBER() OVER ( | ||
| Строка 56: | Строка 59: | ||
| Следующее утверждение находит три лучших продукта, которые имеют самый высокий запас в каждой товарной линейке: | Следующее утверждение находит три лучших продукта, которые имеют самый высокий запас в каждой товарной линейке: | ||
| - | <code> | + | <code sql> |
| WITH inventory | WITH inventory | ||
| AS (SELECT | AS (SELECT | ||
| Строка 89: | Строка 92: | ||
| Сначала создайте таблицу с некоторыми повторяющимися значениями: | Сначала создайте таблицу с некоторыми повторяющимися значениями: | ||
| - | <code> | + | <code sql> |
| CREATE TABLE t ( | CREATE TABLE t ( | ||
| id INT, | id INT, | ||
| Строка 114: | Строка 117: | ||
| FROM t; | FROM t; | ||
| </code> | </code> | ||
| + | |||
| + | {{ :mysql:functions:funktsiya-row_number-v-mysql_3.jpg?nolink |}} | ||
| Как видно из вывода, уникальные строки – это те, чей номер строки равен единице. | Как видно из вывода, уникальные строки – это те, чей номер строки равен единице. | ||
| Строка 119: | Строка 124: | ||
| В-третьих, вы можете использовать общее табличное выражение (CTE) для возврата дублирующихся строк и удалить оператор для удаления: | В-третьих, вы можете использовать общее табличное выражение (CTE) для возврата дублирующихся строк и удалить оператор для удаления: | ||
| - | <code> | + | <code sql> |
| WITH dups AS (SELECT | WITH dups AS (SELECT | ||
| id, | id, | ||
| Строка 138: | Строка 143: | ||
| Предположим, вам нужно отобразить список продуктов с 10 продуктами на странице. Чтобы получить товары для второй страницы, вы используете следующий запрос: | Предположим, вам нужно отобразить список продуктов с 10 продуктами на странице. Чтобы получить товары для второй страницы, вы используете следующий запрос: | ||
| - | <code> | + | <code sql> |
| SELECT * | SELECT * | ||
| FROM | FROM | ||