MySQL 处理插入过程中的主键唯一键重复值的解决方法_MySQL
本篇文章主要介绍在插入数据到表中遇到键重复避免插入重复值的处理方法,主要涉及到IGNORE,ON DUPLICATE KEY UPDATE,REPLACE;接下来就分别看看这三种方式的处理办法。
IGNORE
使用ignore当插入的值遇到主键(PRIMARY KEY)或者唯一键(UNIQUE KEY)重复时自动忽略重复的记录行,不影响后面的记录行的插入,
创建测试表
CREATE TABLE Tignore (ID INT NOT NULL PRIMARY KEY , NAME1 INT )default charset=utf8;
正常的插入如果插入的记录中存在键重复会报错,整个语句都会执行失败
使用IGNORE如果插入的记录中存在重复值会忽略重复值的该记录行,不影响其它行的插入。
REPLACE
使用replace当插入的记录遇到主键或者唯一键重复时先删除表中重复的记录行再插入。
REPLACE INTO Treplace() VALUES(1,1),(1,2),(2,2);
创建测试表
DROP TABLE IF EXISTS Treplace; CREATE TABLE Treplace (ID INT NOT NULL PRIMARY KEY , NAME1 INT )default charset=utf8;
从输出的信息可以看到是4行受影响,说明它是先插入了(1,1)然后又删除了(1,1)
ON DUPLICATE KEY UPDATE
当插入的记录遇到主键或者唯一键重复时,会执行后面定义的UPDATE操作。
相当于先执行Insert 操作,再根据主键或者唯一键执行update操作。
创建测试表
DROP TABLE IF EXISTS Tupdate; CREATE TABLE Tupdate (ID INT NOT NULL PRIMARY KEY , NAME1 INT UNIQUE KEY )default charset=utf8; INSERT INTO Tupdate() VALUES(1,1),(1,2) ON DUPLICATE KEY UPDATE NAME1=NAME1+1; INSERT INTO Tupdate() VALUES(1,1),(1,2) ON DUPLICATE KEY UPDATE NAME1=VALUES(NAME1)+1;
第一条语句相当于执行:
INSERT INTO Tupdate() VALUES(1,1) UPDATE Tupdate SET NAME1=NAME1+1 WHERE ID=1;
第二条语句相当于执行:
INSERT INTO Tupdate() VALUES(1,1) UPDATE Tupdate SET NAME1=2+1 WHERE ID=1;
在ON DUPLICATE KEY UPDATE后面使用VALUES指的就是插入的记录的值,而不使用VALUES指的是表的自身值。
注意: ON DUPLICATE KEY UPDATE的后面执行的UPDATE更新的记录是WHERE重复的主键或者唯一键的ID,这点非常重要。
比如下面这种情况:
INSERT INTO Tupdate() VALUES(1,1),(2,1) ON DUPLICATE KEY UPDATE NAME1=VALUES(ID)+1;
它是唯一键NAME1重复但是主键不重复,执行的语句是这样的:
INSERT INTO Tupdate() VALUES(1,1) UPDATE Tupdate SET NAME1=2+1 WHERE ID=1;
不要认为会插入主键ID=2的记录进去。
总结
上面的三种处理重复值的方法都支持标准的INSERT语法,包括INSERT INTO...VALUES, INSERT INTO ....SET ,INSERT INTO..... SELECT。
以上就是MySQL 处理插入过程中的主键唯一键重复值的解决方法_MySQL的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Big data structure processing skills: Chunking: Break down the data set and process it in chunks to reduce memory consumption. Generator: Generate data items one by one without loading the entire data set, suitable for unlimited data sets. Streaming: Read files or query results line by line, suitable for large files or remote data. External storage: For very large data sets, store the data in a database or NoSQL.

Backing up and restoring a MySQL database in PHP can be achieved by following these steps: Back up the database: Use the mysqldump command to dump the database into a SQL file. Restore database: Use the mysql command to restore the database from SQL files.

MySQL query performance can be optimized by building indexes that reduce lookup time from linear complexity to logarithmic complexity. Use PreparedStatements to prevent SQL injection and improve query performance. Limit query results and reduce the amount of data processed by the server. Optimize join queries, including using appropriate join types, creating indexes, and considering using subqueries. Analyze queries to identify bottlenecks; use caching to reduce database load; optimize PHP code to minimize overhead.

How to insert data into MySQL table? Connect to the database: Use mysqli to establish a connection to the database. Prepare the SQL query: Write an INSERT statement to specify the columns and values to be inserted. Execute query: Use the query() method to execute the insertion query. If successful, a confirmation message will be output.

Creating a MySQL table using PHP requires the following steps: Connect to the database. Create the database if it does not exist. Select a database. Create table. Execute the query. Close the connection.

To use MySQL stored procedures in PHP: Use PDO or the MySQLi extension to connect to a MySQL database. Prepare the statement to call the stored procedure. Execute the stored procedure. Process the result set (if the stored procedure returns results). Close the database connection.

One of the major changes introduced in MySQL 8.4 (the latest LTS release as of 2024) is that the "MySQL Native Password" plugin is no longer enabled by default. Further, MySQL 9.0 removes this plugin completely. This change affects PHP and other app

Oracle database and MySQL are both databases based on the relational model, but Oracle is superior in terms of compatibility, scalability, data types and security; while MySQL focuses on speed and flexibility and is more suitable for small to medium-sized data sets. . ① Oracle provides a wide range of data types, ② provides advanced security features, ③ is suitable for enterprise-level applications; ① MySQL supports NoSQL data types, ② has fewer security measures, and ③ is suitable for small to medium-sized applications.
