L'utilisation de la syntaxe ON DUPLICATE KEY UPDATE dans MySQL

MySQL ON DUPLICATE KEY UPDATE est une syntaxe unique pour Mysql

ON DUPLICATE KEY UPDATE utilisation et instructions 

Pratique de INSERT ... ON DUPLICATE KEY UPDATE dans Mysql

INSÉRER ... SUR LA MISE À JOUR DE LA CLÉ DUPLICATE 语句

Exemple d'utilisation:

Il existe actuellement un enregistrement avec l'ID 20 dans la base de données. À ce stade, l'enregistrement avec l'ID d'insertion = 20 signalera une erreur:

INSERT INTO `book`.`book_test` (`id`, `book_name`, `isbn`, `author`, `price`, `publisher`, `publish_date`, `is_sale`) VALUES ('20', '博弈论', '56', '刘一手', '52.00', '测试出版社', '2018-12-06', '1');
[SQL]INSERT INTO `book`.`book_test` (`id`, `book_name`, `isbn`, `author`, `price`, `publisher`, `publish_date`, `is_sale`) VALUES ('20', '博弈论', '56', '刘一手', '52.00', '测试出版社', '2018-12-06', '1');
[Err] 1062 - Duplicate entry '20' for key 'PRIMARY'

Améliorations SQL: mettre à jour s'il existe, insérer s'il n'existe pas

Exemple:

INSERT INTO `book`.`book_test` (
	`id`,
	`book_name`,
	`isbn`,
	`author`,
	`price`,
	`publisher`,
	`publish_date`,
	`is_sale`
)
VALUES
	(
		'20',
		'博弈论',
		'56',
		'刘一手',
		'100.00',
		'测试出版社',
		'2018-12-06',
		'1'
	) ON DUPLICATE KEY UPDATE book_name =
VALUES
	(book_name),
	isbn =
VALUES
	(isbn),
	author =
VALUES
	(author),
	price =
VALUES
	(price),
	publisher =
VALUES
	(publisher),
	publish_date =
VALUES
	(publish_date),
	is_sale =
VALUES
	(is_sale)

Résultats de la: 

[SQL]INSERT INTO `book`.`book_test` (
...
VALUES
	(is_sale)
受影响的行: 2
时间: 0.001s

Vous pouvez voir que les données d'origine ont été mises à jour: 

Exemples d'utilisation dans Mybatis:

====== >> où id et id_système sont des index joints

<insert id="insertOrUpdate" parameterType="com.company.xxx.model.MyTestBean">
        insert into ${tableName}
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="systemId != null">
                system_id,
            </if>
            <if test="id != null">
                id,
            </if>
            <if test="order != null">
                order,
            </if>
            <if test="desc != null">
                desc,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="systemId != null">
                #{systemId,jdbcType=INTEGER},
            </if>
            <if test="id != null">
                #{id,jdbcType=BIGINT},
            </if>
            <if test="order != null">
                #{order,jdbcType=VARCHAR},
            </if>
            <if test="desc != null">
                #{desc,jdbcType=LONGVARCHAR},
            </if>
        </trim>
        ON DUPLICATE KEY UPDATE
    <trim suffixOverrides=",">
        <if test="order != null">order=VALUES(order),</if>
        <if test="desc != null">desc=VALUES(desc),</if>
    </trim>
</insert>

 

Je suppose que tu aimes

Origine blog.csdn.net/xiangwang2016/article/details/106527878
conseillé
Classement