2016-12-28 10 views
1

は、私が持っていると言う。このようなテーブル:は条件付きでPostgresのSQLで列を選択

table messages 
id | show_message | message 
3 | false  | "some message" 
4 | true  | "another message" 

私はshow_message列がtrueの場合にのみ、メッセージ欄を選択したいのですが、私もどちらかのショーのメッセージ欄を選択します方法。シナリオにサブクエリが適しているでしょうか?私はこれを思っているように感じる。私はPostgres 9.5を使用しています

答えて

3

簡単なのはどうですかcase

select id, show_message, (case when show_message then message end) as message 
from t; 

これは示されていないメッセージに設定された結果でmessage列にNULL値を入れます。

SQLクエリは、固定列セットを返します。したがって、これは単一のクエリで行うことができます。結果セットに2つのカラムがあり、時には3つのカラムが必要な場合は、条件付きロジックや動的SQLが必要になります。

+0

私はshow_messageの値を何かしようとする前にチェックすることができるので、列をnullとして返すことは全く問題ありません。決して使用されたケースはありませんが、まさに私のために働くもののように見えます。私はそれを試してみる。 – DigitalDisaster

+0

これは完璧です。あなたの洞察をいただきありがとうございます。 – DigitalDisaster