MySQL обновить таблицу, чтобы заполнить нулями из другой таблицы - PullRequest
1 голос
/ 16 августа 2011

У меня есть таблица codes с полями id, code, issuedto, issuedtime, которая предварительно заполнена элементами в code, но в которой много строк с NULL s в issuedto, issuedtime. У меня есть другая таблица entrants, в которой есть поля id, status.

Я хочу установить codes.issuedto = winners.id для каждой строки winners с помощью status = 'won'.

Проблема в том, что у меня нет ничего, чтобы присоединиться к столам - поэтому я получаю перекрестное соединение, а это совсем не то, чего я хочу. Что я действительно хочу, так это внутреннее соединение - но без чего-либо, к чему можно присоединиться. У кого-нибудь есть идеи?

РЕДАКТИРОВАТЬ: если бы я делал это вне SQL (что мне, возможно, придется сделать?), Псевдокод будет выглядеть примерно так:

rows = query("SELECT id FROM winners WHERE status='won'");
foreach (rows as r) {
    query("UPDATE codes SET issusedto=" + r.id + ", issued=NOW() WHERE issuedto IS NULL LIMIT 1");
}

1 Ответ

0 голосов
/ 21 августа 2011

ОП здесь.После долгих поисков и экспериментов я пришел к выводу, что этого нельзя сделать в SQL.Я написал короткий скрипт для этой работы, похожий на псевдокод, указанный в вопросе.Соответствие ACID достигается транзакциями (если это важно, проверьте вашу СУБД на предмет подробностей).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...