2016-04-24 7 views
0

Meine aktuelle Abfrage:Wie kann man etwas anderes zurückgeben, wenn nichts gefunden wird?

select timestamp from messagesTable 
where partner_jid='" + lastUserJid + "' AND msg='.roll' 
order by timestamp DESC LIMIT 1 OFFSET 1; 

Dies funktioniert gut ... es sei denn, die Werte in der Datenbank nicht vorhanden. Wenn Werte in der Datenbank nicht vorhanden sind, sollte Select * messagesTable; oder nichts tun, wenn möglich.

Gibt es eine Möglichkeit, einen Scheck für die innerhalb der gleichen Abfrage hinzufügen? Es muss leider die selbe Abfrage sein, da ich Dinge über adb shell ausführen muss. Ich habe versucht, Dinge mit CASE ausprobiert, aber ich verstehe nicht viel über SQL.

+0

Und was, wenn der Wert nicht vorhanden ist geschehen? –

+0

Wenn der Wert nicht existiert, dann wählen Sie einfach * aus messagesTable; Entschuldigung, sollte @CL hinzugefügt haben. –

+0

Um die Frage zu bearbeiten, klicken Sie auf "Bearbeiten". –

Antwort

1

können Sie hängen Sie einfach eine zweite Abfrage mit einer WHERE-Filter, ob die erste Abfrage Rückkehr nichts überprüft:

SELECT * 
FROM (SELECT timestamp 
     FROM messagesTable 
     WHERE partner_jid = ? 
     AND msg = '.roll' 
     ORDER BY timestamp DESC 
     LIMIT 1 OFFSET 1) 
UNION ALL 
SELECT -1       -- or "timestamp FROM msgTab", or whatever 
WHERE NOT EXISTS (SELECT timestamp 
        FROM messagesTable 
        WHERE partner_jid = ? 
        AND msg = '.roll'); 
Verwandte Themen