我有一行包含3个字段:
日收入人士
1 3 1
1 7 2
1 4 3
2 6 1
2 9 2
这个想法是每个人每天赚钱,现在我想要的是为一个人更新一天的收入,但如果那个人没有任何收入(该人/日的行不是那里)比插入行
实施例
日收入人士
1 3 1
在这种情况下,它会更新行并添加1收入:
日收入人士
1 4 1
如果原始行不是preasent(因此人和日期不存在)而不是插入新行,如:
日收入人士
1 1 1
我知道命令INSERT ON DUPLICATE KEY UPDATE
但是这只适用于1个唯一索引列(从我读到的内容),我需要它与day和person(2列)一起工作。
我希望我能正确解释,有人可以提供帮助。 我知道可以从PHP执行此操作,但要避免多次查询(这很重要)我想知道是否可以在1次查询中进行查询。
如果我只考虑日期列(这是唯一的),这是有效的 我有什么机会可以改变它以适应我的情况吗?
INSERT INTO table (day, earnings, person)
VALUES ('1',earnings,1)
ON DUPLICATE KEY UPDATE
earnings = VALUES(earnings+1)
答案 0 :(得分:5)
您可以通过在日和人身上添加复合唯一键来使其工作。
ALTER TABLE `myTable` ADD UNIQUE (`day`,`person`);
然后
INSERT INTO `myTable` (day, earnings, person)
VALUES ('1',$earnings,1)
ON DUPLICATE KEY UPDATE
earnings = earnings + $earnings