2016-05-04 14 views
1

Ich habe eine Eigenschaft Tabelle, wo es regelmäßig von einem XML-Feed aktualisiert. Wenn sich die Eigenschaft nicht in der Datenbank befindet, wird sie eingefügt. Wenn es da ist, aktualisiert es es. Aber auch Benutzer können die Felder über ein Formular am hinteren Ende der Website aktualisieren. Wenn ein Benutzer ein Feld aktualisiert, es kennzeichnet sie und ändert den Status auf 1.mysql Update auf Bedingung eines anderen Feldes

Meine Tabelle sieht wie folgt aus:

heading | nice house 
up_heading | 1 
price  | 40000 
up_price | 0 

In diesem Fall, wenn täglich Cron-Job das Update ausgeführt wird, wird es nicht aktualisieren sie die Position wie die up_heading ‚s Status 1 ist, aber es wird den Preis als der Status von up_price ist 0.

Also meine Frage ist, aktualisieren, wie ich schreiben kann eine effiziente Update-Abfrage wie:

update property 
set heading = $heading 
case up_heading = 0, set price = $price 
case up_price = 0, 

und so weiter bis where p_id = %p_id?

+0

Dies ist, was Sie suchen: http://stackoverflow.com/questions/17265522/conditional-update-in-mysql – dchayka

+1

Was ich tun würde, ist die Verwendung von PHP in der cron Job-Skript, um die Felder zu analysieren und die erforderlichen Daten zu setzen, dann eine einfache UPDATE-SQL-Anweisung mit einer WHERE-Klausel auszuführen und Bedingungen in der Abfrage zu vermeiden. – dchayka

+0

10 'set heading = $ heading'

Antwort

1
update property set 
    heading = case when up_heading = 0 then $heading else heading end, 
    price = case when up_price = 0 then $price else price end 
    -- and so on 
where p_id = %p_id 

Documentation

Verwandte Themen