Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Select, Modify and insert into the same table

What's the easiest way to select a row, modify couple of columns and insert it to the same table? I'm trying to insert a new row based on another.

like image 369
iLemming Avatar asked Mar 26 '12 21:03

iLemming


People also ask

How do you select and insert in the same table?

The SQL INSERT INTO SELECT StatementThe INSERT INTO SELECT statement copies data from one table and inserts it into another table. The INSERT INTO SELECT statement requires that the data types in source and target tables match. Note: The existing records in the target table are unaffected.

Can we use insert and select together?

You can use a select-statement within an INSERT statement to insert zero, one, or more rows into a table from the result table of the select-statement. The select-statement embedded in the INSERT statement is no different from the select-statement you use to retrieve data.


2 Answers

INSERT INTO table2 (column1, column2, column3) SELECT column1, 'no', column3 FROM table2 WHERE column2 = 'yes' 

Hopefully this is a bit clearer as to how you do this. As you can see, I've grabbed two columns from table2 and for the other column I used a text value for instead of the value for column2.

Other patterns you can use:

Combine a column and some other text (Assumes the column is already a string data type.

INSERT INTO table2 (column1, column2) SELECT column1 + 'no', column2 FROM table2 WHERE column2 = 'yes' 

Combine a column and some text, One example where the column is a string and one where it is not.

INSERT INTO table2 (column1, column2) SELECT column1 + 'no', 'A' + cast(column2 as Varchar (10)) FROM table2 WHERE column2 = 'yes' 
like image 200
HLGEM Avatar answered Oct 23 '22 10:10

HLGEM


INSERT INTO table(column1,column2) SELECT column1, const2 FROM table ... 

The select list will likely mix copied columns (by name) and changed columns (by desired values).

like image 26
Jirka Hanika Avatar answered Oct 23 '22 10:10

Jirka Hanika