Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL:Fügen Sie keine neue Zeile ein, wenn die definierten Zeilen gleich sind

Die vorherigen Werte werden nicht gleich sein, weil die Zeit anders ist. Leider.

Sie können dies mit insert . . . select Syntax. Die Idee ist, die zuletzt eingefügte Zeile auszuwählen und ein where zu verwenden -Klausel zum Filtern der Zeilen. Der Filter gibt keine Zeilen (und daher keine Einfügung) zurück, wenn die Werte gleich sind:

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;