SQL PostgreSQL: compter les utilisateurs par nom


Exemple

Supposons que nous voulons savoir combien d'utilisateurs ont le même nom. Laissez-nous créer des users table comme suit:

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

Maintenant, nous venons de découvrir un nouvel utilisateur nommé Joe et aimerions le prendre en compte. Pour ce faire, nous devons déterminer s'il existe une ligne existante avec son nom et, le cas échéant, la mettre à jour pour incrémenter le nombre; d'autre part, s'il n'y a pas de ligne existante, nous devrions la créer.

PostgreSQL utilise la syntaxe suivante: insert… on conflict… met à jour… . Dans ce cas:

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