Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL Insérer si la condition

Vous pouvez faire quelque chose comme ceci :

insert into cats_rel(cat_id, post_id)
    select 11, 32
    where not exists (select 1 from cats_rel where cat_id = 11 and post_id = 32);

MODIFIER :

Oops. Ce qui précède ne fonctionne pas dans MySQL car il manque un from clause (fonctionne dans de nombreuses autres bases de données, cependant). Dans tous les cas, j'écris généralement ceci en mettant les valeurs dans une sous-requête, afin qu'elles n'apparaissent qu'une seule fois dans la requête :

insert into cats_rel(cat_id, post_id)
    select toinsert.cat_id, toinsert.post_id
    from (select 11 as cat_id, 32 as post_id) toinsert
    where not exists (select 1
                      from cats_rel cr
                      where cr.cat_id = toinsert.cat_id and cr.post_id = toinsert.post_id
                     );