MySQL更新表从另一个表填充空值

时间:2011-08-16 13:33:16

标签: mysql join

我的表格codes包含字段id, code, issuedto, issuedtime,其中预先填充了code中的项目,但在NULL中有许多行issuedto, issuedtime s 。我有另一个表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 :(得分:0)

OP在这里。经过一番广泛的搜索和实验,我得出结论,这不能在SQL中完成。我写了一个简短的脚本来为我做这项工作,类似于问题中列出的伪代码。通过事务实现ACID合规性(如果这很重要,请查看您的DBMS以获取详细信息)。