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