INSERT INTO (SELECT & VALUES) TOGETHER

为君一笑 提交于 2019-12-10 17:43:43

问题


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 VIEWtable 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 :)


回答1:


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



回答2:


Try this

INSERT INTO db_example.tab_example (id,name,surname)
SELECT id,first_name,'M. Nega'
FROM db_contacts.tab_mygroup

You can use join in the FROM clause. It should work!



来源:https://stackoverflow.com/questions/24244563/insert-into-select-values-together

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!