2016-07-31 14 views
1

Ich muss eine Spalte aktualisieren, wenn eine andere Spalte bestimmte Daten enthält.Wie wird die Spalte aktualisiert, wenn eine andere Spalte bestimmte Kriterien erfüllt?

Normalerweise, wenn ich eine Spalte aktualisiert werden soll, muss ich die folgende SQL-Abfrage:

UPDATE table1 
SET field1 = replace(field1, 'oldstring', 'newstring') 

Aber was ich kann nicht verstehen, wie es eine Spalte nachschlagen zu machen, und wenn das Feld einige hat Daten, sollte es das Feld einer anderen Spalte aktualisieren.

Hier ist, was ich tun möchte.

  1. Blick in der Tabelle: phpbb_tree
  2. unter Säule: spouses_total
  3. , wenn das Feld leer ist (keine Daten)
  4. Update Spalte: page_template
  5. Update von: tree_body_spouse_1.html bis: tree_body_single.html

Also im Grunde weiß ich, wie der „update“ Teil zu tun, aber nicht wissen, wie es in einer Spalte zuerst aussehen zu lassen, und wenn sie leer ist (oder Streichhölzer) sollte Folgendes tun:

UPDATE phpbb_tree 
SET page_template = replace(page_template, 'tree_body_spouse_1.html', 'tree_body_single.html') 

Hoffentlich konnte jemand mir sagen, wie man es aufschreibt. Ich weiß nicht einmal, ob es überhaupt möglich ist, in einer Spalte nach leeren Daten zu suchen.

+1

Um, gelten nur 'where' Kriterien ... – sgeddes

Antwort

0

Sie könnten CASE-Ausdruck verwenden, um unterschiedliche Ersetzungsbedingungen zu erfüllen.

UPDATE phpbb_tree 
SET page_template = (CASE 
         WHEN spouses_total is null 
          THEN replace(page_template, 'tree_body_spouse_1.html', 'tree_body_single.html')    
         ELSE page_template 
         END 
         ); 

Edit:

Bitte dies überprüfen ..

SQL Fiddle HERE

+0

testete ich Ihre Empfehlung. Aber es hat nicht funktioniert. Ich habe die folgende Nachricht erhalten, als ich es ausgeführt habe: 0 Zeilen betroffen. (Abfrage dauerte 0,0023 Sek.) –

+0

Wie wäre es, wenn wir zuerst die leeren Daten in gatets_total von "leer" in "0" umwandeln, vielleicht ist das das Problem? –

+0

@ Jay-Jay Ich habe SQL Geige zur Verfügung gestellt, um zu zeigen, dass es funktioniert, sehen Sie sich 2 Zeilen, eine, die Nullwert entsprechend geändert hat, andere nicht. –