gpt4 book ai didi

mysql - 获取连接上唯一小部件的计数

转载 作者:行者123 更新时间:2023-11-29 08:12:49 24 4
gpt4 key购买 nike

考虑一个按类别检索小部件的 SQL:

SELECT 
COUNT(*)
FROM
widgets w
JOIN categories c USING (widget_id)
WHERE c.category IN ('print', 'automotive', 'beer')
AND w.stock > 0 ;

如果一个小部件出现在两个类别中,则将在列表中出现两次。 如何返回小部件的计数,而不会因出现在多个类别中而导致重复?

请注意,以下查询返回正确的计数,但它需要在内存中构建临时表,这在大型数据库上不可行:

SELECT COUNT(*) FROM (
SELECT DISTINCT
w.widget_id
FROM
widgets w
JOIN categories c USING (widget_id)
WHERE c.category IN ('print', 'automotive', 'beer')
AND w.stock > 0
) foo;

是否可以编写不需要临时表而返回相同结果的查询?

最佳答案

只需使用 SELECT COUNT(Distinct widget_id)

SELECT 
COUNT(Distinct widget_id)
FROM
widgets w
JOIN categories c USING (widget_id)
WHERE c.category IN ('print', 'automotive', 'beer')
AND w.stock > 0 ;

关于mysql - 获取连接上唯一小部件的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21251935/

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