[英]Update column of a table based on array of varchar in PostgreSQL
我有一個表,我在該表中添加了列varchar顏色代碼。
該表已經有很多行。 添加colorcode列后表格的狀態為
id name location colorcode
121 Royal Challengers Bangalore
122 Sun Risers Hyderabad
123 Dare Devils Delhi
124 Gujrat Lions Ahmadabad
我有一系列顏色代碼
["#FF8484", "#FF82A9", "#FA82FF", "#C682FF", "#8782FF"]
對於表中的每一行,我必須通過將數組的索引與(row_number()-1)進行匹配來更新colorcode列。
使用“ in”子句時,我已經處理了值列表。
例:
select * from table where id in(1,2,3,4) etc
這里1,2,3,4只是一個數組
我想在相似的行上更新colorcode列,但是我不知道如何訪問基於索引的數組元素。
運行更新語句后,我的預期輸出是
id name location colorcode
121 Royal Challengers Bangalore #FF8484
122 Sun Risers Hyderabad #FF82A9
123 Dare Devils Delhi #FA82FF
124 Gujrat Lions Ahmedabad #C682FF
我可以根據ID(即主鍵)對結果進行排序
注意:我正在使用Postgres
您可以按照以下步驟進行操作。 我假設您的表名為t :
update t
set colorcode = middle.cc
from (
select id, ('{#FF8484,#FF82A9,#FA82FF,#C682FF,#8782FF}'::text[])[rn] as cc
from (select id, row_number() over (order by id) as rn from t) as base
where rn <= 5
) as middle
where middle.id = t.id;
在最內部的查詢( base )中,為表中的每個記錄檢索行號。 然后,在中間查詢( middle )中,該行號用於從文本元素的嵌入式數組中獲取相應的顏色代碼。 最后,update語句通過其id再次將該結果與表t連接起來,以存儲該顏色代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.