2009-07-13 12 views
1

Ich benutze MySQL 5.1 mit PHP und ich frage mich, ob es möglich wäre, eine Abfrage auszuführen, die eine bestimmte Zeile mit dem Primärschlüssel auswählen, aber wenn es nicht existiert, um eine andere zurückzugeben.SQL Fallback Row?

Zum Beispiel: select * from table1 where id = "a" else id = "b"

Antwort

1
select * 
    from table1 
    where id="a" 
union all 
select * 
    from table1 
    where id="b" 
    and no exists (
    select * 
     from table1 
     where id="a"); 
+0

Das eigentlich 3 SELECTs tut. Es wäre schneller, einfach eine UNION zwischen 2 SELECTS und dann LIMIT 1 am Final Set zu machen. –

+0

@Artem: Nein, weil die Reihenfolge der UNION nicht garantiert ist, so dass die LIMIT in der "B" eine ergeben kann. –

+0

Weniger als drei selects wäre ein netter Bonus, aber es funktioniert trotzdem perfekt! Danke =) –