插入行或更新(如果存在)(如果存在多个条件)

时间:2012-01-11 00:59:22

标签: php mysql

我有一行包含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)

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