gpt4 book ai didi

mysql计算不重叠的UNION结果

转载 作者:行者123 更新时间:2023-11-29 14:37:52 24 4
gpt4 key购买 nike

好的,我有疑问

(SELECT * FROM jokes WHERE flags < 5 AND (title LIKE ? OR joke LIKE ?) ORDER BY ups DESC,downs ASC)
UNION
(SELECT * FROM jokes WHERE flags < 5 AND (title LIKE ? OR joke LIKE ?) ORDER BY ups DESC,downs ASC)
UNION
(SELECT * FROM jokes WHERE flags < 5 AND (title LIKE ? OR joke LIKE ?) ORDER BY ups DESC,downs ASC)
LIMIT 0, 30

我将使用 COUNT(*) 无限制地运行相同的操作

(SELECT COUNT(*) FROM jokes WHERE flags < 5 AND (title LIKE ? OR joke LIKE ?) ORDER BY ups DESC,downs ASC)
UNION
(SELECT COUNT(*) FROM jokes WHERE flags < 5 AND (title LIKE ? OR joke LIKE ?) ORDER BY ups DESC,downs ASC)
UNION
(SELECT COUNT(*) FROM jokes WHERE flags < 5 AND (title LIKE ? OR joke LIKE ?) ORDER BY ups DESC,downs ASC)

本质上我想做的是获取总结果数(无限制),并获取有限列表。

我遇到的问题是,当我运行计数查询时,我得到的数字比返回的结果更大。我猜测这样做的原因是当我得到结果时,它会过滤掉所有重叠的行,因为计数只计算每个行,因为我必须手动添加它们。

关于如何清理整个过程有什么想法吗?

另外,请注意 select 语句的数量会动态变化,但我希望有一种方法可以获得重复项的总体计数。

谢谢。

最佳答案

伯爵这个怎么样:

SELECT COUNT(DISTINCT Id)
FROM (SELECT Id From jokes WHERE flags < 5 AND (title LIKE ? OR joke LIKE ?)
UNION
SELECT Id From jokes WHERE flags < 5 AND (title LIKE ? OR joke LIKE ?)
UNION
SELECT Id From jokes WHERE flags < 5 AND (title LIKE ? OR joke LIKE ?)) t

这应该为您提供唯一的计数,并且还请注意,我删除了 order by,因为它不值得计算计数查询。

关于mysql计算不重叠的UNION结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8640344/

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