@deepin

Можно ли выполнить select и update одним запросом?

можно ли вернуть, например, значение 1 из столбца строки и одновременно изменить его на 0

смысл - сброс метки: когда 1 выводим что-то, меняем на 0 и после обновления страницы уже не выводим
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
Можно.
UPDATE
    Table_A
SET
    Table_A.col1 = Table_B.col1,
    Table_A.col2 = Table_B.col2
FROM
    Some_Table AS Table_A
    INNER JOIN Other_Table AS Table_B
        ON Table_A.id = Table_B.id
WHERE
    Table_A.col3 = 'cool'
© https://stackoverflow.com/a/2334741
Ответ написан
Zarom
@Zarom
Мастер на все руки из жопы
В 1 запрос Mysql не позволит это у пихать. Вот пример из документации, производящий схожую с нужной вам операцией. Здесь выполняется SELECT с блокировкой на запись.
SELECT COUNTER_FIELD FROM CHILD_CODES FOR UPDATE;
UPDATE CHILD_CODES SET COUNTER_FIELD = COUNTER_FIELD + 1;


Еще, в нагрузку, такой вариант реализации.
Сделать хранимую процедуру, которая будет выполнять данный алгоритм. Да, запросов будет все равно 2, но выполняется они будут на сервере без накладных сетевых расходов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы