gpt4 book ai didi

sqlite - 相同条件下的联合结果

转载 作者:行者123 更新时间:2023-12-03 19:23:43 26 4
gpt4 key购买 nike

我有一个 inventory我的 sqlite 中的表包含列 category 的数据库, name , 和 count .我想用 count 过滤掉行小于 2,再放一个 category排在该类别中的所有其他数据之前,以便更容易将它们存储在 GUI 的 TreeView 中。

我在表中的数据是:

category    name        count     
---------- ---------- ----------
fruit apple 4
fruit banana 3
fruit peach 2
meat pork 1
meat beef 1
vegetable spinach 5
vegetable carrot 2

我所做的是:
SELECT category, '', 0 FROM inventory
UNION
SELECT category, name, count FROM inventory
WHERE category IN
(SELECT category FROM inventory
UNION
SELECT category FROM inventory)
AND count > 1;

我得到的是:
category    ''          0         
---------- ---------- ----------
fruit 0
fruit apple 4
fruit banana 3
fruit peach 2
meat 0
vegetable 0
vegetable carrot 2
vegetable spinach 5

实际上,在这种情况下我想要的是没有 meat排。

我认为问题在于 WHERE子句仅适用于 SELECT在第一个 UNION 之后.但是我怎么能也把条件放在第一个 SELECT ?谁能帮我?提前致谢!

最佳答案

复合查询是从完整查询构建的(除了 ORDER BY)。

仅当您确实要删除重复项时,才应使用 UNION 而不使用 ALL。

您需要 ORDER BY 将标题行排序到正确的位置。

SELECT category, NULL AS name, NULL AS count
FROM inventory
GROUP BY category
HAVING max(count) > 1

UNION ALL

SELECT category, name, count
FROM inventory
WHERE count > 1

ORDER BY category, name;

关于sqlite - 相同条件下的联合结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46391952/

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