通知設定を格納するテーブルを作成しようとしています。この表では、通知設定はtype
,user_id
およびoptions
の列を持ちます。 NULL user_id
FKの行は、デフォルトの設定値を表し、ユーザーが設定に行った変更は、user_id
を使用してテーブルに反映されます。(列=?または列がヌルです)を照会するときにヌル列が最初に返されます
私User#fetchSettings
機能は、フェッチするための型の配列を受け取り、あるいは全く種類が提供されていない場合は、それらのすべてを取得します。この関数は、要求された各タイプの設定を返す必要があります。user_id
がNULLのローに対して、user_id
のローを返します。しかし、私はuser_id
で行をNULLで行より優先させる方法を見つけることができません。次のように
私のクエリは次のとおりです。
select distinct ON (type)
"type",
"options",
"user_id"
from "user_settings"
where
(
"user_settings"."user_id" = '1'
or "user_id" is null
)
and "type" in ('type1', 'type2', 'type3');
ハ!ちょうど私があなたのために書いているもの。安全な側には 'nulls last'を使用してください。 – Patrick
ありがとうございます!申し訳ありませんが、私はそれが何であるかを認識したときに、誰も反応していないことを望んでいました!ここで最後にnullsについて知りませんでしたので、もう一度ありがとう! – terpak
問題はありませんが、回答が同時に作成されることが頻繁に発生します。 – Patrick