@deepin

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

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

смысл - сброс метки: когда 1 выводим что-то, меняем на 0 и после обновления страницы уже не выводим
  • Вопрос задан
  • 200 просмотров
Пригласить эксперта
Ответы на вопрос 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
Ответ написан
В 1 запрос Mysql не позволит это у пихать. Вот пример из документации, производящий схожую с нужной вам операцией. Здесь выполняется SELECT с блокировкой на запись.
SELECT COUNTER_FIELD FROM CHILD_CODES FOR UPDATE;
UPDATE CHILD_CODES SET COUNTER_FIELD = COUNTER_FIELD + 1;


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

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

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