gpt4 book ai didi

sql - 简化UNION查询以使用单个SELECT

转载 作者:行者123 更新时间:2023-12-03 19:49:53 25 4
gpt4 key购买 nike

数据:

我有一个带有以下示例行的sqlite表:

+-------------+----------------+-----------------+
| id | groupId | selected |
+-------------+----------------+-----------------+
| 1 | -1 | 0 |
| 2 | 2 | 0 |
| 3 | 2 | 1 |
| 4 | 5 | 0 |
+-------------+----------------+-----------------+


这很简单,如果 groupId小于0,则它是单个元素,否则它在组中(即使 groupId没有引用任何 id)。

查询:

我想过滤 groupId小于0且不是 selected的每个元素,再加上每个组中的每个第一个元素。在此表中, id: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语句。单个语句可以使用任何东西,但可以聚合函数。

预先感谢您的回答!

最佳答案

不需要联合,都可以在单个WHERE子句中完成。这是查询,它将返回您请求的ID列表。

SELECT  MIN_ID
FROM (
SELECT GROUPID
,MIN(ID) AS MIN_ID
FROM ELEMENTS
WHERE (GROUPID < 0 AND SELECTED = 0)
OR GROUPID >= 0
GROUP BY
GROUPID
)


这是基于以下评论的第二个查询。

SELECT  GROUPID
,MIN(ID) AS MIN_ID
FROM ELEMENTS
WHERE (GROUPID < 0 AND SELECTED = 0)
OR GROUPID >= 0
GROUP BY
GROUPID

关于sql - 简化UNION查询以使用单个SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18112664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com