INSERT INTO (SELECT & VALUES) TOGETHER
Just return the literal value from the SELECT statement; add an expression to the SELECT list. For example:
INSERT INTO db_example.tab_example (id,name,surname,group)
SELECT ID
, first_name
, last_name
, '1' AS group
FROM db_contacts.tab_mygroup;
FOLLOWUP
Q: can I SELECT first_name and last_name in the same column using the AS function? or I need another function?
A: If you want to combine the values in the first_name
and last_name
into a single column, you could concatenate them using an expression, and use that expression in the SELECT list, e.g
CONCAT(last_name,', ',first_name')
or
CONCAT(first_name,' ',last_name)
The AS
keyword won't have any effect in the context of an INSERT ... SELECT
, but assigning an alias to that expression that matches the name of the column the expression is being inserted into does serve as an aid for the future reader.
INSERT INTO db_example.tab_example (id,name,surname,group,full_name)
SELECT ID
, first_name
, last_name
, '1' AS group
, CONCAT(first_name,' ',last_name) AS full_name
FROM db_contacts.tab_mygroup
Related videos on Youtube
rand
Masters graduate in Applied Mathematics and Computer Science.
Updated on June 04, 2022Comments
-
rand about 2 years
I'm trying to
INSERT INTO
a table, and I know 2 ways:Adding rows as values:
INSERT INTO db_example.tab_example (id,name,surname,group) VALUES ('','Tom','Hanks','1');
or from another table:
INSERT INTO db_example.tab_example (id,name,surname) SELECT ID,first_name,last_name FROM db_contacts.tab_mygroup;
but what if I want to insert some values from another table (the second way), and some values manually like a default value (the first way).
here's my try (it didn't work):
INSERT INTO db_example.tab_example (id,name,surname,group) VALUES ( SELECT ID FROM db_contacts.tab_mygroup, SELECT first_name FROM db_contacts.tab_mygroup, SELECT last_name FROM db_contacts.tab_mygroup, '1' );
I thought of creating a
VIEW
table and it might solve the problem, but I thought there might be someway to add both together.Thank you guys! I hope I described well what I need :)
-
Hituptony about 10 yearswhat was the error you got when it failed?
-
beercodebeer about 10 yearsWell, you're
SELECT
ing 4 values, for one...
-
-
spencer7593 about 10 years@rand: the
INSERT ... VALUES
andINSERT ... SELECT
forms of theINSERT
statement are distinct; those two forms cannot be combined. But it is possible to use aSELECT
statement that returns literal values. -
rand about 10 yearsYes, I understood! it's just not logical the way I wrote it, but since I'm a beginner I didn't know the
AS
function. Thank you again! -
rand about 10 yearscan I
SELECT
first_name and last_name in the same column using theAS
function? or I need another function? -
spencer7593 about 10 years@rand: if you want to combine the first_name and last_name into a single column, you could concatenate them using an expression, and use that expression in the SELECT list, e.g
CONCAT(last_name,', ',first_name')
, orCONCAT(first_name,' ',last_name)
. TheAS
keyword won't have any effect in the INSERT ... SELECT, but assigning an alias that matches the name of the column the expression is being inserted into does serve as an aid for the future reader.