postgresql 中的 insert...select 语句将 php 中的插入值与 select 语句相结合

insert...select statement in postgresql combining inserted values from php with a select statement

我看过一些关于如何插入 selected 值的 SO 帖子,但它们总是在所有插入值都来自 select 语句的情况下。我正在努力插入部分由 php 调用提供且部分由 select 语句提供的数据。这是我想做的:

$query = "INSERT INTO deals (latitude, longitude, interested, id, the_geom) VALUES (, , , , SELECT the_geom FROM userlocs WHERE id=)";
$rs = pg_query_params($con, $query, array($latitudeS, $longitudeS, $id_pg , $id_add));

这给了我以下不是很有帮助的错误:

 pg_query_params(): Query failed: ERROR: syntax error at or near "SELECT" LINE 1: ...interested, id, the_geom) VALUES (, , , , SELECT the... ^ in /var/www/html/join.php on line 30

是否可以做我想做的事?如果是这样,我该如何修改我的语法?

非常感谢您的任何建议。

可能最简单的解决方法是将 SELECT 语句放在括号中

INSERT INTO deals (latitude, longitude, interested, id, the_geom) 
VALUES (, , , , (SELECT the_geom FROM userlocs WHERE id = ))

这是一个SQLFiddle演示

根据您是否总是期望来自 userlocs 的值,您也可以通过以下两种方式之一使用 INSERT ... SELECT 语法

INSERT INTO deals (latitude, longitude, interested, id, the_geom) 
SELECT , , , , the_geom FROM userlocs WHERE id = 

INSERT INTO deals (latitude, longitude, interested, id, the_geom) 
SELECT , , , , (SELECT the_geom FROM userlocs WHERE id = )