sql - Simplifying UNION query to use a single SELECT -
the data:
i have sqlite table following example rows:
+-------------+----------------+-----------------+ | id | groupid | selected | +-------------+----------------+-----------------+ | 1 | -1 | 0 | | 2 | 2 | 0 | | 3 | 2 | 1 | | 4 | 5 | 0 | +-------------+----------------+-----------------+
it's pretty simple, if groupid
less 0, it's single element, else it's in group (even if groupid
not referencing of id
s.
the query:
i want filter every element groupid
less 0 , not selected
plus every first element each group. table, id
s: 1, 2 , 4.
the current solution union
:
select * (select * elements (groupid < 0 , selected = 0 ) union select * elements groupid >= 0 group groupid)
the goal:
i want change query use single select
statement. single statement can use anything, aggregate functions.
thanks in advance answers!
there no need union, can done in single clause. here query return list of ids requested.
select min_id ( select groupid ,min(id) min_id elements (groupid < 0 , selected = 0) or groupid >= 0 group groupid )
here second query based on comments below.
select groupid ,min(id) min_id elements (groupid < 0 , selected = 0) or groupid >= 0 group groupid
Comments
Post a Comment