Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL Inserir se Condição


Você pode fazer algo assim:
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);

EDITAR:

Ops. Isso acima não funciona no MySQL porque está faltando um from cláusula (funciona em muitos outros bancos de dados, no entanto). De qualquer forma, costumo escrever isso colocando os valores em uma subconsulta, para que eles apareçam na consulta apenas uma vez:
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
                     );