Обновление MySQL без первичного ключа - PullRequest
0 голосов
/ 30 августа 2018

Я хочу выяснить, как я могу обновить строку как LIMIT 2,2 для выбора

Вот маленький пример:

col1 | col2
 5      10
 5      10
 5      10

Я хочу обновить 2-й ряд следующим образом:

col1 | col2
 5      10
 1      10
 5      10

Я знаю номер строки, поэтому хочу что-то подобное:

UPDATE table
SET col1 = 1
WHERE col1 = 5
LIMIT 2, 1

мы не можем использовать лимит, но я знаю, что это достижимо, HeidiSQL может это сделать, и я пытаюсь выяснить, как они работают

спасибо

1 Ответ

0 голосов
/ 30 августа 2018

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

SQL работает с наборами строк, и вы можете обновлять только те строки, которые могут быть определены как принадлежащие к набору.

Например, вы можете

UPDATE Customers SET Preferred=True WHERE TotalSales > 1000

, который установит флаг "Предпочитаемый" для любых клиентов, у которых продажи превышают 1000. Это может быть один клиент или миллион или нет.

Единственный способ выполнить обновление одной строки, о котором вы спрашивали, - это найти способ идентифицировать строку. На многих серверах баз данных вы можете настроить столбец IDENTITY или SEQUENCE, который будет автоматически назначать каждой строке уникальный идентификатор.

Вы можете добавить столбец ID с установленным свойством IDENTITY, что даст вам:

ID | col1 | col2
 1    5     10
 2    5     10
 3    5     10

Таким образом, обновление этой конкретной строки будет:

UPDATE table SET col1 = 1 WHERE ID = 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...