使用mysql存在产品时插入或更新

时间:2012-11-10 09:31:35

标签: mysql sql

main_product表

productid outward shopid
    333      2      44//present
    343      4      44//present
    353      5      44//present
    363      1      44//present
    373      2      44//not present

min_product表

productid outward shopid

333      1      44
343      1      44
353      1      44
363      1      44

SELECT DISTINCT (A.productid),A.outward, B.productid,B.outward
FROM main_product  A
INNER JOIN min_product B on B.productid=A.product_id
where A.shopid='44' and B.shopid='44'

我的问题如何通过检查是否存在使用mysql的一个查询中的INSERT OR UPDATE  如果存在更新,则插入

这样的事情?

INSERT
INTO    mytable (key, value)
VALUES  ($newkey, $newvalue)
ON DUPLICATE KEY UPDATE
SET     value = $newvalue

2 个答案:

答案 0 :(得分:0)

你可以在这里创建一个Procedure,它将首先与错误处理程序块一起INSERT,如下所示,如果发现行存在错误,那么在MySQL中1062,那么更新将对你有效。

已编辑

 DELIMITER $$

DROP PROCEDURE IF EXISTS `NAME_SP` $$
CREATE  PROCEDURE `NAME_SP`(IN bpin_d int(11))
    READS SQL DATA
begin


DECLARE out_status text;

DECLARE CONTINUE HANDLER FOR 1062
               SET out_status= 'RIN';
INSERT INTO CANDIDATE_POOL(BPIN) VALUES (bpin_d);
IF(out_status <> '') THEN
UPDATE CANDIDATE_POOL u SET u.BPIN = bpin_d;
SET out_status = '';
END IF;


END $$

DELIMITER ;

答案 1 :(得分:0)

通常,在您开始添加记录之前,您将没有product_id。因此,您可以首先检查您的变量并使用该变量来决定,或者您可以使用if exists (query...)这样的先前问题显示mysql if exists