Php 当3列';s值匹配
我在重复键上使用了一个查询Php 当3列';s值匹配,php,mysql,Php,Mysql,我在重复键上使用了一个查询,我将唯一键设置为分类,国家和年份 但是,我需要更新仅当分类&&country&&year所有3个都具有来自用户输入的相同值时 但当其中一个值匹配时,它会更新同一行 它成为classify||country|年 这就是我需要的 INSERT INTO statistics(classify, country, ads, year) VALUES (:classify, :country, 1, :year) ON DUPLICATE KEY UPDATE ads =
,我将唯一键设置为分类
,国家
和年份
但是,我需要更新
仅当分类&&country&&year
所有3个都具有来自用户输入的相同值时
但当其中一个值匹配时,它会更新同一行
它成为classify||country|年
这就是我需要的
INSERT INTO statistics(classify, country, ads, year)
VALUES (:classify, :country, 1, :year)
ON DUPLICATE KEY UPDATE ads = ads + 1
有什么办法解决这个问题吗?在(分类、国家、年份)上创建一个唯一的约束更改表统计添加约束tb_uq unique(分类、国家、年份)
我已经尝试过了,但没有用不,应该这样做。请稍候,我将创建小提琴。@user2178521您是如何尝试的?它应该能工作。@JW웃 好的,那么约束应该是它,当其中一个值为match时,我只是阅读了,并考虑了可能性:)这本身不是一个索引,而是一个约束;)这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论。@MartinPrikryl缺少的部分是该约束。如果存在,则重复键上的起作用,如果不存在,则不会起作用。虽然没有解释,但肯定是解决方案。
UPDATE statistics SET ads = ads + 1
WHERE classify='$classify' && country='$country' && year='$year'