Я пытаюсь выбрать определенную строку в базе данных с помощью SELECT и OFFSET. Результат, который я получаю, логичен, и я получаю желаемую строку, которую я хочу. Но тогда мне нужно обновить ту же самую конкретную строку, так что я сделать что-то вроде этого:Запрос MySQL - используйте SELECT внутри UPDATE
UPDATE table
SET value=1
WHERE value IN (SELECT * FROM(
SELECT value FROM table WHERE some criteria LIMIT 1 OFFSET 2) temp_tab);
Теперь то, что я ожидаю от этого кода является обновление выбранной строки ТОЛЬКО. Вместо этого он обновляет все строки в DataTable и устанавливает их значение 1.
Когда я использую только:
SELECT * FROM(
SELECT value FROM table WHERE some criteria LIMIT 1 OFFSET 2) temp_tab
я получаю только 1 строку в качестве выхода. (LIMIT 1 OFFSET 2 гарантирует, что я получу 1 строку, и это 2-й доступ). Я не совсем уверен, что я делаю неправильно или как я должен это делать.
Примечание: Мне нужно использовать SELECT, а не какой-либо другой метод, используя уникальный идентификатор строки или что-то подобное. Любая помощь будет принята с благодарностью.
Не используйте 'значение'. Используйте что-то уникальное, как 'id'. '... WHERE id IN ...' –
@juergend d В моем случае мне нужно использовать инструкцию SELECT, чтобы указать эту конкретную строку и способ, которым я ее выбираю, используя OFFSET X (потому что критерии в WHERE вызывают конечно, я получаю строки, которые я хочу, но потом мне нужно только 1 от них), и я ожидаю, что это значение установлено на 1 только на этой выбранной строке, где я сделал WHERE value IN (выбор), но вместо этого SET применяется ко всем строкам в таблице, а не только выбор. Извините за моего бедного английского, если у вас возникли проблемы с пониманием меня. – Chogart
Я понимаю. Но зачем использовать 'SELECT значение из вашей_таблицы'? Do 'UPDATE table SET value = 1 WHERE id IN (SELECT * FROM ( SELECT id FROM table WHERE некоторые критерии LIMIT 1 OFFSET 2) temp_tab) вместо этого. –