2011-08-16 263 views
1

填补空我有一个表codes与领域id, code, issuedto, issuedtime这是预先装有物品code但有NULL S IN issuedto, issuedtime多行。我有另一个表entrants其中有字段id, statusMySQL的更新表,从另一个表

我想为winners的每一行设置codes.issuedto = winners.idstatus = '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

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