MySQL INSERT INTO ... VALUES和SELECT

The*_*ist 52 mysql sql select insert

有没有办法插入我从select-query中获得的预设值和值?例如:

INSERT INTO table1 VALUES ("A string", 5, [int]).
Run Code Online (Sandbox Code Playgroud)

我有"A string"的值和数字5,但我要从这样的选择中找到[int]值:

SELECT idTable2
FROM table2
WHERE ...
Run Code Online (Sandbox Code Playgroud)

这给了我放在table1中的id.

如何将其合并为一个语句?

Guf*_*ffa 80

使用insert ... select查询,并将已知值放在select:

insert into table1
select 'A string', 5, idTable2
from table2
where ...
Run Code Online (Sandbox Code Playgroud)

  • @ NeilC.Obremski:是的,但如果你期望结果是其他东西,这只是一个问题.如果在这种情况下需要错误,则可以使用子查询. (3认同)
  • 我用这种方法发现的一个问题是,如果`SELECT`返回零记录,那么语句成功但没有数据是`INSERT`. (2认同)

zou*_*yjs 66

只需使用子查询就像:

INSERT INTO table1 VALUES ("A string", 5, (SELECT ...)).
Run Code Online (Sandbox Code Playgroud)

  • 它应该是"INSERT INTO table1 VALUES("A string",5,(SELECT ... LIMIT 1))." (6认同)
  • +1用于提供如何执行此操作的示例,同时仍使用`VALUES`语法. (4认同)
  • 此方法可能会出现“超过 1 行”之类的错误 (2认同)

Mah*_*ito 12

 
INSERT INTO table_name1
            (id,
             name,
             address,
             contact_number) 
SELECT id, name, address, contact_number FROM table_name2;   


ech*_*_Me 10

试试这个

INSERT INTO TABLE1 (COL1 , COL2,COL3) values
('A STRING' , 5 , (select idTable2 from Table2) )
where ...
Run Code Online (Sandbox Code Playgroud)

  • 那么`SELECT`表中的多列怎么样?如果我从那里尝试多个列,我会得到`操作数应该包含1列`. (6认同)

Fel*_*ira 7

所有其他答案解决了问题,我的答案与其他答案的工作方式相同,但只是在一个更具说明性的方式(这适用于MySQL ...不知道其他SQL服务器):

INSERT INTO table1 SET 
  stringColumn  = 'A String', 
  numericColumn = 5, 
  selectColumn  = (SELECT idTable2 FROM table2 WHERE ...);
Run Code Online (Sandbox Code Playgroud)

您可以参考MySQL文档:INSERT语法