SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 07.08.2009 12:45:31

Максим
Участник
Зарегистрирован: 07.08.2009
Сообщений: 2

Запрос изменения значения в строке со смещением значения других строк.

Подскажите пожалуйста, возможно ли сделать такой запрос.
Есть таблица
+----+------+-------------+-------+---------+------+------+------+----------+
| ID | name | description | title | alt_img | img  | url  | hide | position |
+----+------+-------------+-------+---------+------+------+------+----------+
|  1 | 1    | NULL        | NULL  | NULL    | NULL | NULL |    0 |        1 |
|  2 | 2    | NULL        | NULL  | NULL    | NULL | NULL |    0 |        2 |
|  3 | 3    | NULL        | NULL  | NULL    | NULL | NULL |    0 |        3 |
|  4 | 4    | NULL        | NULL  | NULL    | NULL | NULL |    0 |        4 |
|  5 | 5    | NULL        | NULL  | NULL    | NULL | NULL |    0 |        5 |
|  6 | 6    | NULL        | NULL  | NULL    | NULL | NULL |    0 |        6 |
|  7 | 7    | NULL        | NULL  | NULL    | NULL | NULL |    0 |        7 |
|  8 | 8    | NULL        | NULL  | NULL    | NULL | NULL |    0 |        8 |
+----+------+-------------+-------+---------+------+------+------+----------+

Поле ID стоит auto_increment.  Нужен запрос чтобы например 8 вставить между 2 и 3 . И соответственно чтоб не было пропусков в ID.

Неактивен

 

#2 07.08.2009 13:50:48

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Запрос изменения значения в строке со смещением значения других строк.

А зачем? smile

UPDATE tablename SET ID = name + 1 WHERE name > 2;
UPDATE tablename SET ID = 3 WHERE name = 8;

Но смысла в этом нет никакого, данные всегда выдаются в порядке сортировки,
так что переставлять ID — дело неблагодарное, а главное — оно может побить
внешние ключи.

Неактивен

 

#3 07.08.2009 14:38:36

Максим
Участник
Зарегистрирован: 07.08.2009
Сообщений: 2

Re: Запрос изменения значения в строке со смещением значения других строк.

Ок. Но не совсем то. Нужно мне это для того чтоб на сайте сделать вывод категорий в определенной последовательности.  А в админке сайта можно было этим управлять. То что Вы написали не работает так ( В Вашем запросе изменения на +1 проходят, но потом то дается 3 тому что раньше было 7(до первого запроса) и еще делая из восьмерки тройку, восьмерка то пропадает совсем.

Неактивен

 

#4 07.08.2009 15:17:31

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Запрос изменения значения в строке со смещением значения других строк.

Восьмерка совсем не пропадает, она становится тройкой, а остальные съезжают.
Но id никогда не нужно перекручивать, просто сортируйте по position.

Неактивен

 

#5 09.08.2009 20:50:50

DJK
Завсегдатай
Зарегистрирован: 09.08.2009
Сообщений: 32

Re: Запрос изменения значения в строке со смещением значения других строк.

а что мешает position менять. через админку сайта меняешь позицию, а запрос потом обновляет колонку position у записей.
изменяется position, затем в запросе выборки Select указываешь соктировку по этому полю.

Отредактированно DJK (09.08.2009 20:52:25)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson