我有2个程序实例,访问数据库中的1个表
表points
game | player1 | player2
--------|-----------|-----------
Poker | 5 |
Skat | 8 | 4
Bridge | | 10
如果使用第一个实例的player1想要将他的积分(例如扑克)保存到表中,则必须确定扑克是否已经存在。如果没有,扑克将与玩家1的积分一起插入。但是如果扑克已经被播放器2插入,则只应插入播放器1的点(该行只应更改)。
我怎样才能确保每种游戏只插入一次,在这种情况下只插入(改变)点?
我认为,专栏game
必须是唯一的。
我的解决方案是首先查询游戏类型并检查行数。如果有0行,则插入游戏和点,如果已经有1行,则只插入点
但是,有没有更好/更快的解决方案,一开始没有查询?
答案 0 :(得分:4)
INSERT INTO points (game,player1) VALUES ('Poker',5)
ON DUPLICATE KEY UPDATE player1=5;
有关详细信息,请参阅MySQL文档:INSERT ... ON DUPLICATE KEY Syntax。
答案 1 :(得分:0)
将插入符分成两个语句。为了实现这一点,“游戏”必须是一个独特的列 - 也就是说,没有两个值可以相同。
INSERT INTO 'game' VALUES('Poker',null,null);
UPDATE 'game' SET player1='5' WHERE 'game'='POKER';
第一行如果已经存在则不会影响任何内容,因为唯一约束会阻止它。
答案 2 :(得分:0)
答案 3 :(得分:0)
REPLACE INTO points (game,player1) VALUES ('Poker',5);