SQL - 在INSERT VALUES中选择

aoc*_*ira 27 sql

如何在INSERT操作中进行SELECT?

insert into tableX (a_id, b_id) 
VALUES ((SELECT service_id 
         FROM tableY 
         WHERE id = 10, 2));
Run Code Online (Sandbox Code Playgroud)

但得到一个错误..那里有什么问题?

谢谢

Dav*_*sta 44

虽然我的原始答案提供了一个有效的解决方案,但实际上我错误的原因是错误的.在VALUES子句中使用标量子查询没有任何问题.问题陈述的问题只是一个括号出错了; 标量子查询必须括在括号中.

这应该工作:

insert into tableX (a_id, b_id) 
VALUES (
  (SELECT service_id 
         FROM tableY 
         WHERE id = 10)
  , 2
  );
Run Code Online (Sandbox Code Playgroud)

原始答案

VALUES只能与文字值一起使用.但是,可以在子查询中使用文字值.做这个:

insert into tableX (a_id, b_id) SELECT service_id, 2 FROM tableY WHERE id = 10
Run Code Online (Sandbox Code Playgroud)


Cha*_*ndu 11

您不需要值关键字,也可以在选择列表中为b_id列添加默认值2,而不是在SELECT语句后添加它

试试这个:

INSERT INTO tableX (a_id, b_id) 
SELECT service_id, 2 
  FROM tableY 
 WHERE id = 10
Run Code Online (Sandbox Code Playgroud)