数据:
我有一个带有以下示例行的 sqlite 表:
+-------------+----------------+-----------------+
| id | groupId | selected |
+-------------+----------------+-----------------+
| 1 | -1 | 0 |
| 2 | 2 | 0 |
| 3 | 2 | 1 |
| 4 | 5 | 0 |
+-------------+----------------+-----------------+
这很简单,如果groupId
小于 0,则它是单个元素,否则它在一个组中(即使sgroupId
没有引用任何id
s.
查询:
我想过滤groupId
小于 0 的每个元素,而不是selected
每个组中的每个第一个元素。从此表中,id
s:1、2 和 4。
当前的解决方案UNION
:
SELECT * FROM (SELECT * FROM Elements WHERE (groupId < 0 AND selected = 0 ) UNION SELECT * FROM Elements WHERE groupId >= 0 GROUP BY groupId)
目标:
我想将查询更改为仅使用一条SELECT
语句。该单一语句可以使用任何东西,但聚合函数除外。
提前感谢您的回答!