Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
mysql:functions:row_number [2021/07/09 22:08] werwolf [Примеры функции ROW_NUMBER() MySQL] |
mysql:functions:row_number [2023/01/12 12:18] (текущий) |
||
|---|---|---|---|
| Строка 7: | Строка 7: | ||
| Ниже показан синтаксис функции ROW_NUMBER(): | Ниже показан синтаксис функции ROW_NUMBER(): | ||
| - | <code>ROW_NUMBER() OVER (<partition_definition> <order_definition>) | + | <code sql> |
| + | ROW_NUMBER() OVER (<partition_definition> <order_definition>) | ||
| </code> | </code> | ||
| Строка 14: | Строка 15: | ||
| partition_definition имеет следующий синтаксис: | partition_definition имеет следующий синтаксис: | ||
| - | <code>PARTITION BY <expression>,[{,<expression>}...] | + | <code> |
| + | PARTITION BY <expression>,[{,<expression>}...] | ||
| </code> | </code> | ||
| Строка 23: | Строка 25: | ||
| ==== order_definition ==== | ==== order_definition ==== | ||
| - | order_definition синтаксически выглядит следующим образом : | + | order_definition синтаксически выглядит следующим образом :<code sql> |
| - | + | ||
| - | <code> | + | |
| 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: | Следующий оператор использует функцию ROW_NUMBER() для назначения последовательного номера каждой строке таблицы products: | ||
| - | + | <code sql> | |
| - | <code>SELECT | + | SELECT |
| ROW_NUMBER() OVER ( | ROW_NUMBER() OVER ( | ||
| ORDER BY productName | ORDER BY productName | ||
| Строка 57: | Строка 59: | ||
| Следующее утверждение находит три лучших продукта, которые имеют самый высокий запас в каждой товарной линейке: | Следующее утверждение находит три лучших продукта, которые имеют самый высокий запас в каждой товарной линейке: | ||
| - | <code>WITH inventory | + | <code sql> |
| + | WITH inventory | ||
| AS (SELECT | AS (SELECT | ||
| productLine, | productLine, | ||
| Строка 89: | Строка 92: | ||
| Сначала создайте таблицу с некоторыми повторяющимися значениями: | Сначала создайте таблицу с некоторыми повторяющимися значениями: | ||
| - | <code>CREATE TABLE t ( | + | <code sql> |
| + | CREATE TABLE t ( | ||
| id INT, | id INT, | ||
| name VARCHAR(10) NOT NULL | name VARCHAR(10) NOT NULL | ||
| Строка 106: | Строка 110: | ||
| Во-вторых, используйте функцию ROW_NUMBER() для разделения строк на разделы по всем столбцам. Номер строки будет перезапущен для каждого уникального набора строк. | Во-вторых, используйте функцию ROW_NUMBER() для разделения строк на разделы по всем столбцам. Номер строки будет перезапущен для каждого уникального набора строк. | ||
| - | <code>SELECT | + | <code> |
| + | SELECT | ||
| id, | id, | ||
| name, | name, | ||
| Строка 112: | Строка 117: | ||
| FROM t; | FROM t; | ||
| </code> | </code> | ||
| + | |||
| + | {{ :mysql:functions:funktsiya-row_number-v-mysql_3.jpg?nolink |}} | ||
| Как видно из вывода, уникальные строки – это те, чей номер строки равен единице. | Как видно из вывода, уникальные строки – это те, чей номер строки равен единице. | ||
| Строка 117: | Строка 124: | ||
| В-третьих, вы можете использовать общее табличное выражение (CTE) для возврата дублирующихся строк и удалить оператор для удаления: | В-третьих, вы можете использовать общее табличное выражение (CTE) для возврата дублирующихся строк и удалить оператор для удаления: | ||
| - | <code>WITH dups AS (SELECT | + | <code sql> |
| + | WITH dups AS (SELECT | ||
| id, | id, | ||
| name, | name, | ||
| Строка 135: | Строка 143: | ||
| Предположим, вам нужно отобразить список продуктов с 10 продуктами на странице. Чтобы получить товары для второй страницы, вы используете следующий запрос: | Предположим, вам нужно отобразить список продуктов с 10 продуктами на странице. Чтобы получить товары для второй страницы, вы используете следующий запрос: | ||
| - | <code>SELECT * | + | <code sql> |
| + | SELECT * | ||
| FROM | FROM | ||
| (SELECT productName, | (SELECT productName, | ||