Мне нужно обновить столбец "myColumn" в "myTable" для строк с 5 по 10. Я думал, что могу сделать следующее, но, по-видимому, это дает мне синтаксическую ошибку:
UPDATE myTable SET myColumn = 'mamal' LIMIT 5,10;
Спасибо
Таблицы 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';
Вы можете выбрать и обновить значение столбца на основе основной клавиши вашей таблицы.
если вы хотите изменить ограничение строк, вы можете изменить предельные значения.
в нижнем кодовом идентификаторе - это не что иное, как первичный ключ вашей таблицы
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 )
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'
Попробуй это:
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
здесь, это просто трюк, чтобы обойти описанную здесь ошибку.