У меня есть таблица с ниже схемой +-------------------------+------------------+------+-----+-------------------+-----------------------------+ | Field | Type | Null | Key | Default | Extra | +-------------------------+------------------+------+-----+-------------------+-----------------------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | parent_id | int(10) unsigned | NO | | NULL | | | name | varchar(255) | NO | UNI | NULL | | | disp1 | varchar(255) | NO | | NULL | | | disp2 | varchar(255) | NO | | NULL | | | created | timestamp | NO | | CURRENT_TIMESTAMP | | | updated | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | | node_e | tinyint(1) | YES | | 1 | | | node_priority | int(5) | NO | | NULL | | +-------------------------+------------------+------+-----+-------------------+-----------------------------+
бегают ниже запроса, чтобы получить нужные данные:запросов для увеличения значения на основе значения из другого столбца
select id,node_priority,parent_id from node where parent_id in (Select distinct parent_id from node as n) order by parent_id asc;
, который дает ниже выхода:
+-----+---------------+-----------+
| id | node_priority | parent_id |
+-----+---------------+-----------+
| 17 | 0 | 2 |
| 18 | 0 | 2 |
| 19 | 0 | 2 |
| 20 | 0 | 2 |
| 21 | 0 | 2 |
| 216 | 0 | 3 |
| 23 | 0 | 22 |
| 24 | 0 | 22 |
| 25 | 0 | 22 |
| 26 | 0 | 22 |
| 27 | 0 | 22 |
| 29 | 0 | 28 |
| 30 | 0 | 28 |
| 31 | 0 | 28 |
| 32 | 0 | 28 |
| 33 | 0 | 28 |
| 35 | 0 | 34 |
| 36 | 0 | 34 |
| 37 | 0 | 34 |
| 38 | 0 | 34 |
| 39 | 0 | 34 |
| 40 | 0 | 34 |
| 41 | 0 | 34 |
| 42 | 0 | 34 |
| 44 | 0 | 43 |
| 45 | 0 | 43 |
| 46 | 0 | 43 |
| 47 | 0 | 43 |
| 48 | 0 | 43 |
| 49 | 0 | 43 |
| 50 | 0 | 43 |
| 51 | 0 | 43 |
| 58 | 0 | 52 |
| 60 | 0 | 52 |
| 66 | 0 | 52 |
| 77 | 0 | 52 |
| 95 | 0 | 52 |
| 96 | 0 | 52 |
| 106 | 0 | 52 |
| 117 | 0 | 52 |
| 128 | 0 | 52 |
| 137 | 0 | 52 |
| 141 | 0 | 52 |
| 164 | 0 | 52 |
| 55 | 0 | 53 |
| 56 | 0 | 53 |
| 57 | 0 | 53 |
| 59 | 0 | 58 |
| 61 | 0 | 60 |
| 62 | 0 | 60 |
| 63 | 0 | 60 |
| 64 | 0 | 60 |
| 65 | 0 | 60 |
| 67 | 0 | 66 |
| 68 | 0 | 66 |
| 72 | 0 | 66 |
| 73 | 0 | 66 |
| 74 | 0 | 66 |
Моя главная цель:
Я хочу, чтобы для одного значения столбца parent_id значение node_priority должно быть в инкрементном порядке от 0 до числа строк с одинаковым parent_id.
так, что результат будет, как показано ниже:
+-----+---------------+-----------+
| id | node_priority | parent_id |
+-----+---------------+-----------+
| 17 | 0 | 2 |
| 18 | 1 | 2 |
| 19 | 2 | 2 |
| 20 | 3 | 2 |
| 21 | 4 | 2 |
| 216 | 0 | 3 |
| 23 | 0 | 22 |
| 24 | 1 | 22 |
| 25 | 2 | 22 |
| 26 | 3 | 22 |
| 27 | 4 | 22 |
| 29 | 0 | 28 |
| 30 | 1 | 28 |
| 31 | 2 | 28 |
| 32 | 3 | 28 |
| 33 | 4 | 28 |
| 35 | 0 | 34 |
| 36 | 1 | 34 |
Я не могу написать запрос для того же. Просьба помочь.
можно использовать row_number() OVER (ORDER BY (SELECT ***)), чтобы получить свой результат – PK20