SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 29.04.2011 14:45:17

aRpi
Участник
Зарегистрирован: 29.04.2011
Сообщений: 1

MySQL изменить строку по её номеру (полежение в таблице) КАК?

Здравствуйте! Подскажите?

Известно что строка в таблице по счету 14-ая, как её изменить?

Конечно можно поменять строку содержащую конкретное значение, а вот по номеру строки, как её менять непонятно ???

Вот что я хочу:

UPDATE 'таблица' WHERE строка_№==14 SET caption='новое_значение' LIMIT 1;

Неактивен

 

#2 29.04.2011 19:46:24

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: MySQL изменить строку по её номеру (полежение в таблице) КАК?

Здравствуйте.

aRpi написал:

Известно что строка в таблице по счету 14-ая, как её изменить?

В рамках модели реляционных БД нет понятия номера строки в таблице, поэтому такая постановка задачи не очень корректная.

aRpi написал:

Конечно можно поменять строку содержащую конкретное значение, а вот по номеру строки, как её менять непонятно ???

Почему бы Вам не завести в таблице столбец с номером строки? Например, с аттрибутом auto_increment. По этому столбцу и меняли бы значения. В чем такая необходимость менять по несуществующему номеру строки?

Отредактированно deadka (29.04.2011 19:47:12)


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 30.04.2011 15:26:10

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

Re: MySQL изменить строку по её номеру (полежение в таблице) КАК?

UPDATE tablename SET fieldname = value LIMIT 13,1. Будет изменена 14я строка
в какой-то сортировке (вообще говоря, произвольная строка при условии, что в
таблице есть 14 строк). Если добавить ORDER BY, определенность появится, но
только зачем всё это?

Неактивен

 

#4 30.04.2011 15:58:25

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: MySQL изменить строку по её номеру (полежение в таблице) КАК?

paulus, а насколько такой приём вообще корректен? Какие таблицы кроме типа разве что MyISAM дают возможность рассчитывать на то, что данные будут выбираться из таблицы в том же порядке, в котором заносились? Ну или были отсортированы с помощью alter table tablename order by tfiled?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#5 30.04.2011 18:01:22

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

Re: MySQL изменить строку по её номеру (полежение в таблице) КАК?

MyISAM как раз не гарантирует порядка. Стоит удалить строку, а потом добавить
новую, и новая может добавиться в освободившуюся «дырку».

В InnoDB это не документировано, но порядок следует из общих принципов —
данные лежат на листьях главного ключа. Как следствие — они могут выбирать-
ся только сортированными по главному ключу (если нет явной сортировки) smile

Неактивен

 

#6 30.04.2011 19:09:43

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: MySQL изменить строку по её номеру (полежение в таблице) КАК?

Насчет MyISAM - ок, а если после удаления сделать optimize table t или alter table t order by field f, то удалят ли "дырки" эти операции, будет ли порядок будет гарантирован?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#7 30.04.2011 23:24:15

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

Re: MySQL изменить строку по её номеру (полежение в таблице) КАК?

Да, удалят, конечно. Оптимизация таблицы как раз этим и занимается.
Стандарт не гарантирует выборки данных в правильном порядке, но я
не верю, что когда-то может возникнуть версия, которая начнет читать
данные не последовательно — в этом просто нет смысла.

Неактивен

 

#8 01.05.2011 07:56:47

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: MySQL изменить строку по её номеру (полежение в таблице) КАК?

Спасибо smile.

Отредактированно deadka (01.05.2011 07:57:00)


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

Board footer

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