如果存在或插入MYSQL更新

时间:2015-08-21 04:39:08

标签: php mysql

我一直试图让以下SQL工作,但似乎跳过了插入功能。基本上更新应该优先考虑它应该触发的大部分时间。

UPDATE `teams-tasks`
        SET status=(:s), name=(:n), description=(:d), importance=(:i), applies=(:a) 
        WHERE teamId =(:t) AND date=(:da) AND playerId =(:p) AND creatorId =(:c);
        IF (SELECT ROW_COUNT() = 0);                    
        INSERT INTO `teams-tasks`
            ( status, date, creatorId, teamId, playerId, name, description, importance, applies ) 
        VALUES 
            ( (:s), (:da), (:c), (:t), (:p), (:n), (:d), (:i), (:a) ))
我在做错了什么? 如果重要的话,我正在使用php pdo进行数据库连接

感谢

2 个答案:

答案 0 :(得分:0)

用户替换为查询,确保该行是否存在,它将更新数据,如果行不存在,则会插入日期。

检查重复条目,它在内部比较主键

e.g。

REPLACE INTO table_name(column_name1,column_name2,…)
VALUES(value1,value2,…)

e.g。

REPLACE INTO offices(officecode,city)
VALUES(8,'San Jose')

由于 阿米特

答案 1 :(得分:0)

你应该使用INSERT ... ON DUPLICATE KEY UPDATE

例如

INSERT INTO AggregatedData (datenum,Timestamp)
VALUES ("734152.979166667","2010-01-14 23:30:00.000")
ON DUPLICATE KEY UPDATE 
  Timestamp=VALUES(Timestamp)