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