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を使用して1つのクエリでどのようにすればよいですか

このようなもの?

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

2 に答える 2

0

Procedure次のようなエラーハンドラのブロックとともに最初にINSERTを実行するhereを作成できます。また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 に答える
0

通常、最初にレコードを追加するまで、product_id はありません。if exists (query...)したがって、最初に変数を確認し、それを使用して決定するか、以前に尋ねられたこの質問のように使用して、存在する場合は mysqlを示すことができます

于 2012-11-10T19:55:13.290 に答える