Re: insert with select as value - Mailing list pgsql-general

From John Sidney-Woollett
Subject Re: insert with select as value
Date
Msg-id 40D847C1.9050505@wardbrook.com
Whole thread Raw
In response to insert with select as value  (Milos Prudek <prudek@bvx.cz>)
List pgsql-general
Try rewriting the inner query as:

SELECT s.* FROM (
SELECT max(idthread)+1 as MX, 'CZE', 'sample text' FROM table WHERE
idsection = 'CZE'
union
SELECT 1 as MX,  'CZE', 'sample text'
)  as s
ORDER BY s.MX desc
LIMIT 1

I think that should work, and always return a row.

John Sidney-Woollett

Milos Prudek wrote:

> I need to insert a value = max(value)+1, where max is a select limited
> by a 'where' clause. Like this:
>
> INSERT INTO table (idthread, idsection,txt)
> VALUES (
>   (SELECT max(idthread)+1 FROM table WHERE  idsection = 'CZE'),
> 'CZE', 'sample text')
> );
>
> This works fine, except when the result of SELECT is empty - which is
> true when the table is empty.
>
> Is it possible to create a "SELECT max(idthread)+1 FROM table WHERE
> idsection = 'CZE';" that will return value 1 instead of value None if
> the SELECT has no results?
>

pgsql-general by date:

Previous
From: Dennis Gearon
Date:
Subject: Experience with postgres/apache host providers
Next
From: Vams
Date:
Subject: Re: psql