我有一个表格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没有很好地形成的明显原因,这失败了。如何解决这个问题?
答案 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'