在PostgreSQL中,我有两个表
CREATE TABLE A (
id int PRIMARY KEY,
name varchar
);
CREATE TABLE B (
id int PRIMARY KEY,
a A,
type varchar
);
如您所见,表B的属性类型之一是A.
首先,我使用以下查询在表A中插入一行
INSERT INTO A(id, name) VALUES(3241,'Item1');
然后,我需要在表B中插入一个新行。如何在表B中插入新行时在表A中选择一行,以用作属性值?
答案 0 :(得分:1)
首先,这不是一个好主意。如果要组合两个表中的数据,则应使用常规引用,如下所示:
CREATE TABLE B (
id int PRIMARY KEY,
a_id int REFERENCES A(id),
type varchar
);
尽管如此,它正式成为你想要的东西(但不推荐):
INSERT INTO B(id, A, type)
VALUES (1, (SELECT A FROM A WHERE id = 3241), 'some type');
SELECT * FROM B;
id | a | type
----+--------------+-----------
1 | (3241,Item1) | some type
(1 row)
答案 1 :(得分:0)
试试这个: -
INSERT INTO B (id,a,type) VALUES
(123456,(SELECT A from A WHERE id=1234656), 'typeName' );