Как обновить столбец для диапазона номеров строк?

0

Мне нужно обновить столбец "myColumn" в "myTable" для строк с 5 по 10. Я думал, что могу сделать следующее, но, по-видимому, это дает мне синтаксическую ошибку:

UPDATE myTable SET myColumn = 'mamal'  LIMIT 5,10;

Спасибо

  • 1
    У вас есть первичный ключ? как перечисление?
Теги:

4 ответа

3
Лучший ответ

Таблицы SQL представляют собой неупорядоченные множества. Если у вас есть первичный ключ, вы можете использовать его для заказа.

MySQL допускает ограничение, но не смещение, поэтому вы можете обновить первые пять строк:

UPDATE myTable
    SET myColumn = 'mamal'
    ORDER BY id
    LIMIT 5;

Но не со смещением.

Вы можете обойти это с помощью JOIN:

UPDATE mytable t JOIN
       (SELECT id
        FROM mytable tt
        ORDER BY id
        LIMIT 5, 10
       ) tt
       ON tt.id = t.id
    SET myColumn = 'mamal';
3

Вы можете выбрать и обновить значение столбца на основе основной клавиши вашей таблицы.

если вы хотите изменить ограничение строк, вы можете изменить предельные значения.

в нижнем кодовом идентификаторе - это не что иное, как первичный ключ вашей таблицы

UPDATE myTable SET myColumn='mamal' WHERE id IN ( SELECT id FROM ( SELECT id FROM myTable where id ORDER BY id ASC LIMIT 5,5 ) tmp )
1

TRY, используя subquery и join как subquery ниже, и замените столбец join столбце <column> реальным

UPDATE myTable mt
INNER JOIN (SELECT <column> FROm myTable LIMIT 5,10) t ON t.<column> = mt.<column>
SET mt.myColumn = 'mamal'
1

Попробуй это:

update myTable 
set myColumn = 'mamal' 
where your_primary_key 
in (select * from (select your_primary_key from myTable limit 5,5) as t);

MySQL поддерживает offset в предложении limit, но только для SELECT. Таким образом, правильный синтаксис: LIMIT offset,row_count. В этом случае это должно быть limit 5,5, а не limit 5,10. Проверьте: выберите Синтаксис.

Вы также можете использовать LIMIT в UPDATE, но в этом случае вы можете указать только row_count. Проверьте: обновите синтаксис.

Если у вас нет первичного ключа, просто используйте любой уникальный ключ.
Для чего вам нужно select * from здесь, это просто трюк, чтобы обойти описанную здесь ошибку.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню