0
に基づいて行を見つける:次のように私はテーブルを持っているserverlのcreiteria
id var status warehouse
1 x True 1
2 x False 1
3 y False 1
私はそれをvar
を与えると、次のようにそれは私に一つだけの行を返すクエリを書きたいです。 statusがTrueの場合は、この行を最初に返します。そうでない場合は、ステータスを返します。何も見つからなければ何も返しません。
x
たとえば にとってはid=1
(2が間違っている!)を返します をy
ために、それは何も返さないだろうz
ためid=3
を返します。私は私のような2つのクエリと機能でそれを行うことができます知っている
:given_input
は'x'
または'z'
または'y'
ある
select id into choose_id
from tab
where var=given_input and and status
limit 1;
IF choose_id IS NULL THEN
select id into choose_id
from tab
where var=given_input
limit 1;
END IF;
continue work with choose_id
はIF
なステートメントのない単一のクエリでは、それはなんとかですか?
行うことはできませんか? – jarlh
@ jarlh。 。 。はい、これは真偽の単純化です。正直言って、経験の少ないユーザーはしばしばそれが真実であると誤解していると思います。
@ GordonLinoff実際には、(ステータスが真、次に1が、2が他の場合)、ORDER BYステータスDESCは同じではありません。ブール値フィールドでも可能な 'Null'値は、それぞれのオプションで異なって順序付けされるので、これらは同じ解決法ではありません。 – Elad