gpt4 book ai didi

SQL:如何选择至少有 N 条评论的人?

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

我有一个简单的(我想)问题,这让我感到困惑(我不是 SQL 专家,您很快就会看到...:-)。

我有一个表 person 包含字段 idname,还有一个表 comment 包含字段 idid_persontext:

---------------
table: person
---------------
id | name
---------------

---------------------------
table: comment
---------------------------
id | id_person | text
---------------------------

评论链接到 person.id => comment.id_person 上的人。
每个人可以有很多评论。
我宁愿不保存任何表中的评论数。

问题是:如何选择所有至少有 N 条评论的人?

这就是我现在正在尝试的,但这当然是错误的......:

SELECT * FROM person WHERE (SELECT COUNT(*) FROM comment WHERE id_person = 2) >= N

P.S.:我目前正在使用 sqlite,但标准的 SQL 答案很好...

最佳答案

我不确定我是否明白您所尝试的有什么问题。您对 ID 进行了硬编码,但如果您只是将其换掉,应该没问题。

SELECT *
FROM person
WHERE (SELECT COUNT(*)
FROM comment
WHERE id_person = person.id) >= N

另一个解决方案,无论好坏都很难知道(如果性能是一个问题,你应该尝试每一个,或者至少检查查询计划),将利用 GROUP BY 子句:

SELECT *
FROM person
WHERE id IN (SELECT id_person
FROM comment
GROUP BY id_person
HAVING COUNT(*) >= N)

INNER JOIN 相比,我喜欢在这里使用 IN 子句,因为它可以让您像以前一样执行 SELECT *在你的例子中。这样做当然可以,sometimes not be ideal ,但这听起来很适合您的情况。

当然,在其中的每一个中,您都必须用参数或文字值换出 N

关于SQL:如何选择至少有 N 条评论的人?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28996330/

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