Re: default value for select?
От | Tony Wasson |
---|---|
Тема | Re: default value for select? |
Дата | |
Msg-id | 6d8daee30505091030f5c7828@mail.gmail.com обсуждение исходный текст |
Ответ на | default value for select? ("Mark Fenbers" <Mark.Fenbers@noaa.gov>) |
Список | pgsql-sql |
On 5/9/05, Mark Fenbers <Mark.Fenbers@noaa.gov> wrote: > I want to update a column in myTable. The value this column is set to > depends on a nested select statement which sometimes returns 0 rows instead > of 1. This is a problem since the column I'm trying to update is set to > refuse nulls. Here's a sample: > > update myTable set myColumn = (Select altColumn from altTable where > altColumn != 'XXX' limit 1) where myColumn = 'XXX'; > > MyColumn cannot accept nulls, but sometimes "Select altColumn ..." returns > 0 rows, and thus, the query fails. > > Is there a way to set a default value to be inserted into myColumn if and > when "select altColumn ..." returns zero rows? > > Mark Mark, You can work around this by using a CASE statement. In this case, test for a NULL from your subquery. This is not elegant at all, but it should do what you are wanting. update myTable set myColumn = (CASE WHEN (Select altColumn from altTable where altColumn != 'XXX' limit 1) IS NULL THEN 'some default value' ELSE (Select altColumn from altTable where altColumn != 'XXX' limit 1) END) where myColumn = 'XXX'; Hope this helps... Tony
В списке pgsql-sql по дате отправления: