2014-08-01 2 views
2

Как обновить только n-ю строку из таблицы?Как обновить n-ю строку в таблице базы данных SQL?

Чтобы обновить вторую строку, например, я попытался использовать UPDATE и LIMIT, но это дает мне ошибку.

UPDATE database_table 
SET field = 'new_value' 
LIMIT 0, 1 

Есть ли способ сделать это?

+1

Почему бы просто не обратиться к нему по его первичному ключу? –

+0

Это вариант, но мне нужно будет многое изменить в моем коде, чтобы работать таким образом. Если бы не было другого варианта, я сделаю это. – user3697768

+2

n-я строка относительна. Вы не знаете, как будет сортироваться таблица, если вы не указали ее. –

ответ

2

Если у вас есть первичный ключ и столбец вы хотите приказать (чтобы получить п-ю строку), вы могли бы сделать что-то вроде:

UPDATE database_table 
SET field = 'new_value' 
WHERE primary_key IN (
    SELECT primary_key 
    FROM database_table 
    ORDER BY some_date_column 
    LIMIT n - 1, 1 
) 

Edit: я, вероятно, следует добавить один нюанс. Этот ответ может быть технически корректным, но вы, вероятно, не используете его. Я не могу представить слишком много сценариев, где вы действительно хотите обновить строку таблицы nth. Обычно вы должны обновлять таблицы только на основе первичных ключей. Обновление n-й строки, скорее всего, нарушит ваше приложение, если одновременно используют несколько пользователей (или даже несколько сеансов с одним и тем же пользователем).

real Ответ: вероятно, вы должны изменить свой код для обновления на основе первичного ключа.

+0

Я использую этот код для приложения, которое только я собираюсь использовать, поэтому он будет работать. Но я начну менять свой код на использование первичного ключа. Большое спасибо! – user3697768

-1

Вам потребуется какой-то идентификатор, а затем сделать что-то вроде этого:

UPDATE database_table SET field = 'new_value' WHERE id = 2 
Смежные вопросы