1

尝试使用新创建的 id 更新某些列。例子:

╔═══════════════════════════╗
║ TABLE_LIST_BINDER         ║
╠════╦══════════════════════╣
║ id ║ tbl_id_lists         ║
╠════╬══════════════════════╣
║ 1  ║ 1,2,3,4,5,6,7,8,9,10 ║
╚════╩══════════════════════╝

╔═════════════════════════════╗
║ TABLE_LIST_ITSELF           ║
╠════╦═════════════╦══════════╣
║ id ║ text_or_sm  ║ some_val ║
╠════╬═════════════╬══════════╣
║ 11 ║ ok lets see ║ ikd123   ║
╚════╩═════════════╩══════════╝

好吧,这是我所拥有的一个粗略的例子。

文字说明:我正在尝试更新 tbl_list_binder 的 tbl_id_lists,方法是使用 postgresql 将新插入的行添加到 TABLE_LIST_ITSLEF。在一个查询中可行吗?

我目前的 SQL 代码状态:

UPDATE TABLE_LIST_BINDER 
    SET tbl_id_lists=concat(tbl_id_lists,','(
        INSERT INTO TABLE_LIST_ITSELF (text_or_sm, some_val) 
        VALUES ('letz danse','mkei') 
        RETURNING id)) 
    WHERE id=1

我的方法是:使用 concat 组合值的现有文本,然后是逗号,最后是返回的 ID 值。

4

1 回答 1

2
with _insert as 
(
INSERT INTO TABLE_LIST_ITSELF (text_or_sm, some_val) 
        VALUES ('letz danse','mkei') 
        RETURNING id
)
UPDATE TABLE_LIST_BINDER 
    SET tbl_id_lists=concat(tbl_id_lists,',' || (select id from _insert))
where id = 1;
于 2018-12-07T09:16:54.620 回答