从另一个表中选择SQL插入

时间:2015-08-11 14:31:55

标签: sql

我有一个表格X,我想在其中插入一行。这个表引用了另一个表Y中的外键。我现在想在表X中插入一个新条目时使用表Y中的这个id插入到表X中。

INSERT into X (col1, col2, col3, foreignKey)
(
  'col1 value',
  'col2 value',
  'col3 value',
  select id from Y y where y.id = '2'
);

由于sql没有很好地形成的明显原因,这失败了。如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

取决于你想做什么:

INSERT into X (col1, col2, col3, foreignKey)
select
  'col1 value',
  'col2 value',
  'col3 value',
  id from Y y where y.id = '2';

将插入与y where y.id = '2'返回相同的行数。

或者:

INSERT into X (col1, col2, col3, foreignKey)
(
  'col1 value',
  'col2 value',
  'col3 value',
  (select id from Y y where y.id = '2')
);

仅当(select id from Y y where y.id = '2')返回1行(或0行)时才有效。即使y为空,也会一直插入1行!

答案 1 :(得分:2)

正确的语法是:

Insert Into X (Col1, Col2, Col3, ForeignKey)
Select  'col1 value',
        'col2 value',
        'col3 value',
        id
From    Y y
Where   y.Id = '2'