一起插入(SELECT& VALUES)

时间:2014-06-16 13:11:14

标签: mysql sql insert-into

我正在尝试INSERT INTO一张桌子,我知道两种方式:

将行添加为值:

INSERT INTO db_example.tab_example (id,name,surname,group)
VALUES ('','Tom','Hanks','1');

或来自另一张表:

INSERT INTO db_example.tab_example (id,name,surname)
SELECT ID,first_name,last_name FROM db_contacts.tab_mygroup;

但如果我想从另一个表中插入一些值(第二种方式),并且某些值手动像默认值(第一种方式),该怎么办。

这是我的尝试(它不起作用):

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'
);

我想过创建一个VIEW表,它可能会解决问题,但我认为可能会将两者加在一起。

谢谢你们!我希望我能很好地描述我需要的东西:)

2 个答案:

答案 0 :(得分:4)

只需从SELECT语句返回文字值;将表达式添加到SELECT列表。例如:

INSERT INTO db_example.tab_example (id,name,surname,group)
SELECT ID
     , first_name
     , last_name
     , '1' AS group
  FROM db_contacts.tab_mygroup;

<强>后续

问:我可以使用AS函数在同一列中选择first_name和last_name吗?或者我需要另一个功能?

答:如果要将first_namelast_name中的值组合到一个列中,可以使用表达式将它们连接起来,并使用该表达式SELECT列表,例如

CONCAT(last_name,', ',first_name')

CONCAT(first_name,' ',last_name)

AS关键字在INSERT ... SELECT的上下文中没有任何影响,但是为该表达式分配与插入表达式的列的名称相匹配的别名确实用作为未来的读者提供帮助。

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

答案 1 :(得分:0)

试试这个

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

它应该工作! Check this fiddle

相关问题