簡體   English   中英

如何將postgres中選定行的列值增加1?

[英]How to increment a column value by 1 for selected rows in postgres?

我有一個 postgres 表,其中包含列idnameitemcounter 。現在我想將用戶所屬的行的counter值增加1

我嘗試做這樣的事情,但出現語法錯誤

UPDATE Items set counter = counter + 1 WHERE users = 'Tony';

這應該將用戶Tony所屬的所有行的counter值增加1。類似

最初的

id | name | item    | counter
1  | Tony  | car    | 1
2  | Tony  | bike   | 1
3  | Ray   | car    | 1
4  | Ray   | bike   | 1
5  | Tony  | cycle  | 1

最終的

id | name | item    | counter
1  | Tony  | car    | 2
2  | Tony  | bike   | 2
3  | Ray   | car    | 1
4  | Ray   | bike   | 1
5  | Tony  | cycle  | 2

但是我的查詢出現語法錯誤。我做錯了什么?

您的UPDATE查詢包含users而不是name

演示:db<>小提琴

UPDATE Items set counter = counter + 1 WHERE name = 'Tony';

可能列名是錯誤的。 嘗試這個:

UPDATE Items set counter = counter + 1 WHERE name= 'Tony';

FOR rowdata1 IN

    select   employee_id, accrual_group_code, accrual_type, start_date,accru_date from z_123  where (doc_id =0 or doc_id is null ) order by accru_date
            LOOP
                            employeeId   = rowdata1.employee_id;
                            accrualgroupcode   = rowdata1.accrual_group_code;
                            accrualtype   = rowdata1.accrual_type;
                            accrudate   = rowdata1.accru_date;
                            select (cast(date_trunc('month', accrudate::date) as date) - interval '1 month')::date into startdate;

                            update  z_123 set company_id = 2 , doc_id= 2 where employee_id = employeeId
                            and  accrual_group_code = accrualgroupcode and  accrual_type = accrualtype and accru_date = accrudate;                                
            END LOOP; 
    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM