20 nov 2015, 09:19, Clemens Ladisch:

> E.Pasma wrote:
>> An aggregate function can still be used in a sub-query for a column  
>> value.  For the example with integers:
>>
>> WITH RECURSIVE
>> breaks(t) AS (
>>   SELECT 1
>>   UNION
>>   SELECT (SELECT min(x) FROM test WHERE x > t + 2 AND x < 10)
>>   FROM   breaks
>> )
>> SELECT t FROM breaks
>> ;
>
> In SQLite, a scalar subquery returns NULL when nothing is found; this
> needs to be filtered out in the outermost query:
>
> WITH RECURSIVE breaks(t) AS (
>  SELECT min(x) FROM test
>  UNION
>  SELECT (SELECT min(x)
>          FROM test
>          WHERE x > t + 2)
>  FROM breaks
> )
> SELECT t
> FROM breaks
> WHERE t IS NOT NULL;


OK. We can also filter the NULL straight away within the CTE:

WITH RECURSIVE
  breaks(t) AS (
    SELECT 1
    UNION
    SELECT (SELECT min(x) FROM test WHERE x > t + 2 AND x < 10) AS t2
    FROM   breaks
    WHERE  t2 IS NOT NULL
  )
SELECT t FROM breaks


Reply via email to