PostgreSQL 按名稱計算使用者

假設我們想知道有多少使用者具有相同的名稱。讓我們建立表 users 如下:

create table users(
    id serial,
    name varchar(8) unique,
    count int
);

現在,我們剛剛發現了一個名為 Joe 的新使用者,並希望將他考慮在內。為了實現這一點,我們需要確定是否存在具有其名稱的現有行,如果是,則將其更新為遞增計數; 另一方面,如果沒有現有的行,我們應該建立它。

PostgreSQL 使用的語法如下: 插入…衝突…做更新中… 。在這種情況下:

insert into users(name, count)
    values('Joe', 1)
    on conflict (name) do update set count = users.count + 1;