2

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'

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

像这样的东西?

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

2 回答 2

0

通常,在您添加记录开始之前,您不会有 product_id。所以你可以先检查你的变量并用它来决定,或者你可以if exists (query...)像以前问过的问题一样使用,如果存在则显示mysql

于 2012-11-10T19:55:13.290 回答
0

您可以在此处创建一个Procedure首先插入的错误处理程序块,如以下和如果1062在 MySQL 中发现行存在错误,则更新将为您工作。

已编辑

 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 ;
于 2012-11-10T09:59:20.310 回答