Postgresql 使用SELECT语句返回INSERT INTO语句

Postgresql 使用SELECT语句返回INSERT INTO语句,postgresql,join,sql-insert,Postgresql,Join,Sql Insert,我正在向表中插入数据,并希望返回插入的数据。插入的数据包含外键。我想通过外键的连接来获取整个数据 我试着在没有运气的情况下选择返回。这是可能的,还是我只需要在插入数据后进行另一次查询 插入语句: INSERT INTO someTable (col1, col2, col3, foreign_id) VALUES ('value1', 'value2', 'value3', 1); 那么在这种情况下,我能得到一个基本上会给我: SELECT someTable.*, foreignTabl

我正在向表中插入数据,并希望返回插入的数据。插入的数据包含外键。我想通过外键的连接来获取整个数据

我试着在没有运气的情况下选择返回。这是可能的,还是我只需要在插入数据后进行另一次查询

插入语句:

INSERT INTO someTable (col1, col2, col3, foreign_id) 
VALUES  ('value1', 'value2', 'value3', 1);
那么在这种情况下,我能得到一个基本上会给我:

SELECT someTable.*, foreignTable.* 
FROM someTable 
   JOIN foreignTable ON someTable.foreign_id = foreignTable.id;
您可以使用以下方法:

with new_row as (
  INSERT INTO some_table (col1, col2, col3, foreign_id) 
  VALUES  ('value1', 'value2', 'value3', 1)
  returning *
)
SELECT new_row.*, ft.* 
FROM new_row
   JOIN foreign_table ft ON new_row.foreign_id = ft.id;
您可以使用以下方法:

with new_row as (
  INSERT INTO some_table (col1, col2, col3, foreign_id) 
  VALUES  ('value1', 'value2', 'value3', 1)
  returning *
)
SELECT new_row.*, ft.* 
FROM new_row
   JOIN foreign_table ft ON new_row.foreign_id = ft.id;

您可以为此使用CTE:

WITH inserting AS (
    INSERT INTO...
    RETURNING <new data>
)
SELECT i.*, ft.*
FROM inserting i JOIN foreign_table ft ...
插入为(
插入到。。。
返回
)
选择i*,英尺*
从插入我加入外国_表ft。。。
在这种情况下,将执行
INSERT
语句。之后将执行
SELECT
语句。这可以引用插入的数据

您可以为此使用CTE:

WITH inserting AS (
    INSERT INTO...
    RETURNING <new data>
)
SELECT i.*, ft.*
FROM inserting i JOIN foreign_table ft ...
插入为(
插入到。。。
返回
)
选择i*,英尺*
从插入我加入外国_表ft。。。

在这种情况下,将执行
INSERT
语句。之后将执行
SELECT
语句。这可以引用插入的数据

您正在select语句中引用CTE的结果。但这不会带来任何回报。你需要退货clause@S-男人和一匹没有名字的马,谢谢你们的回答,我希望我能接受这两个,但是S-Man稍微快一点,所以我接受了他的回答。谢谢你们两位,这很有效!您正在select语句中引用CTE的结果。但这不会带来任何回报。你需要退货clause@S-男人和一匹没有名字的马,谢谢你们的回答,我希望我能接受这两个,但是S-Man稍微快一点,所以我接受了他的回答。谢谢你们两位,这很有效!