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

MySQL :ne pas insérer de nouvelle ligne si les lignes définies sont identiques

Les valeurs précédentes ne seront pas être le même, parce que le temps est différent. Hélas.

Vous pouvez le faire en utilisant le insert . . . select syntaxe. L'idée est de sélectionner la dernière ligne insérée et d'utiliser un where clause pour filtrer les lignes. Le filtre ne renverra aucune ligne (et donc aucune insertion) lorsque les valeurs sont les mêmes :

insert into AeroSamples(temperature, pressure, humidity) 
    select :t, :p, :h
    from (select temperature, pressure, humidity
          from AeroSamples
          order by id desc
          limit 1
         ) as1
    where as1.temperature <> :t or as1.pressure <> :p or as1.humidity <> :h;