2016-04-24 7 views
0

私の現在のクエリ:これは正常に動作します何も見つからないときに何か他のものを返す方法?

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

...値がデータベースに存在しない場合を除きます。 値がデータベースに存在しない場合は、Select * messagesTable;か、可能な限り何もしないでください。

同じクエリ内にチェックを追加する方法はありますか?残念なことに、私はadbシェルを通して実行する必要があるため、同じクエリでなければなりません。私はCASEで物事を試してきましたが、SQLについてはあまり理解していません。

+0

そして、どのような値が存在しない場合にどうすべきか? –

+0

値が存在しない場合は、select * from messagesTable;申し訳ありませんが、@ CLを追加してください。 –

+0

質問を編集するには、[編集]をクリックします。 –

答えて

1

あなただけのWHERE最初のクエリが何も返さなかったかどうかをチェックするフィルタを用いて、2番目のクエリを追加することができます

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'); 
関連する問題