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
答案 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