ran*_*and 3 mysql sql insert-into
我正在尝试INSERT INTO一张桌子,我知道2种方法:
将行添加为值:
INSERT INTO db_example.tab_example (id,name,surname,group)
VALUES ('','Tom','Hanks','1');
Run Code Online (Sandbox Code Playgroud)
或从另一个表:
INSERT INTO db_example.tab_example (id,name,surname)
SELECT ID,first_name,last_name FROM db_contacts.tab_mygroup;
Run Code Online (Sandbox Code Playgroud)
但是,如果我想从另一个表中插入一些值(第二种方法),而手动插入一些值(如默认值)(第一种方法),该怎么办呢?
这是我的尝试(没有用):
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'
);
Run Code Online (Sandbox Code Playgroud)
我想创建一个VIEW表,它可能会解决问题,但我认为可能会有某种方式将两者加在一起。
感谢大伙们!我希望我能很好地描述我的需求:)
只需从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;
Run Code Online (Sandbox Code Playgroud)
跟进
问:我可以使用AS函数在同一列中选择first_name和last_name吗?还是我需要其他功能?
答:如果你想要的值在合并first_name和last_name成一列,你可以使用表达式将它们连接起来,并使用SELECT列表表达式,如
CONCAT(last_name,', ',first_name')
Run Code Online (Sandbox Code Playgroud)
要么
CONCAT(first_name,' ',last_name)
Run Code Online (Sandbox Code Playgroud)
该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
Run Code Online (Sandbox Code Playgroud)