在重复键更新时使用insert中的where子句

时间:2015-01-13 11:43:03

标签: mysql insert-update

据我所知,我不能在Insert语句中使用where子句,但在这里我想要做的是如果不存在相同类型的行,我想插入一个新行,否则我需要更新该行。所以我需要使用where子句来做到这一点。这是我的查询但由于where子句而无效。有人可以帮我这个。

谢谢。

"INSERT INTO "
                . "`leaves_count` "
                . "(`leave_cat_id`, `leave_days_count`, `emp_number`) "
                . "VALUES ('$req_lv_cat', $req_lv_day_count, '$empNmbr') "
                . "ON DUPLICATE KEY UPDATE "
                . "leave_days_count = leave_days_count + ($req_lv_day_count) "
                . "WHERE "
                . "(leave_cat_id = '$req_lv_cat' AND emp_number = '$empNmbr')"

2 个答案:

答案 0 :(得分:0)

请使用合并声明。它会做"如果存在UPDATE,则INSERT"。

MERGE <hint> INTO <table_name>
USING <table_view_or_query>
ON (<condition>)
WHEN MATCHED THEN <update_clause>
WHEN NOT MATCHED THEN <insert_clause>;

答案 1 :(得分:0)

我在这里发帖,希望对你有所帮助

 INSERT INTO table (id,a,b,c,d,e,f,g)
 VALUES (1,2,3,4,5,6,7,8) 
 ON DUPLICATE KEY
 UPDATE a=a, b=b, c=c, d=d, e=e, f=f, g=g;