When inserting data into a table, you often encounter this situation: 1. First, determine whether the data exists; 2. If the data does not exist, insert the data; 3. If the data exists, update the data.
In SQL Server, you can perform the following operations:
If not exists (select 1 from t where id = 1)
Insert into T (ID, update_time) values (1, getdate ())
Else
Update t set update_time = getdate () Where id = 1
So how does MySQL implement this logic? Don't worry! MySQL has a simpler method: replace
Replace into T (ID, update_time) values (1, now ());
Or
Replace into T (ID, update_time) select 1, now ();
Replace into is similar to insert. The difference is that replace into first tries to insert data into the table. if this row of data already exists in the table (determined based on the primary key or unique index), delete the row of data and insert new data. 2. Otherwise, insert new data directly.
Note that the table to which data is inserted must have a primary key or a unique index! Otherwise, replace into inserts data directly, which leads to duplicate data in the table.
MySQL replace into has three forms:
1. Replace into tbl_name (col_name,...) values (...)
2. Replace into tbl_name (col_name,...) select...
I used this article, after an incorrect table clearing.
3. Replace into tbl_name set col_name = value ,...
The first two forms use more. The "into" keyword can be omitted, but it is better to add "into" to make it more intuitive. In addition, for columns without values, MySQL automatically assigns default values to these columns.