2016-12-28 5 views
1

сказать, у меня есть таблица вроде этого:условно выберите столбец в Postgres SQL

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

Я хочу только выбрать столбец сообщения, если show_message столбца верно, но я также хочу, чтобы выбрать столбец показать сообщение либо путь. Будет ли подзапрос подходящим в сценарии? Я чувствую, что переусердствовал. Я использую Postgres 9.5

ответ

3

Как насчет простой case?

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

Это поместит значение NULL в message столбце в наборе результатов для сообщений, которые не показаны.

SQL-запросы возвращают фиксированный набор столбцов. Итак, это лучшее, что вы можете сделать с одним запросом. Если вам действительно нужен набор результатов, который иногда имеет два столбца, а иногда и три, тогда потребуется какая-то условная логика или динамический SQL.

+0

Возврат столбца в качестве значения null является полностью прекрасным, потому что я могу проверить значение show_message, прежде чем пытаться что-либо сделать с ним. Никогда не использовал случай, но похоже, что будет работать для меня. Я это попробую. – DigitalDisaster

+0

Это прекрасно. Спасибо за понимание. – DigitalDisaster

Смежные вопросы