gpt4 book ai didi

sql - 我如何使用 SQL 来选择重复记录以及相关项目的计数?

转载 作者:可可西里 更新时间:2023-11-01 07:31:45 24 4
gpt4 key购买 nike

我知道这个问题的标题有点令人困惑,所以请耐心等待。 :)

我有一个带有 Person 记录的 (MySQL) 数据库。 Person 也有一个 slug 字段。不幸的是,slug 字段不是唯一的。有许多重复记录,即记录具有不同的 ID 但名字、姓氏和 slug 相同。一个 Person 也可能有 0 篇或多篇相关文章、博客条目和播客剧集。

如果这让您感到困惑,请看下面的结构图:

alt text
(来源:cbstaff.com)

我想生成符合此条件的记录列表:重复记录(即,相同的 slug 字段)对于至少有 1 篇文章、博客条目或播客剧集的人。

我有一个 SQL 查询,它将列出具有相同 slug 字段的所有记录:

SELECT
id,
first_name,
last_name,
slug,
COUNT(slug) AS person_records
FROM
people_person
GROUP BY
slug
HAVING
(COUNT(slug) > 1)
ORDER BY
last_name, first_name, id;

但这包括可能没有至少 1 篇文章、博客条目或播客的人员的记录。我可以调整它以符合第二个标准吗?

编辑:

我更新了数据库图表以简化它并使我在做什么更清楚。 (请注意,一些数据库表名称发生了变化——我之前试图从更高层次看一下结构,但有点不清楚。)

最佳答案

Select P.id, P.first_name, P.last_name, P.slug
From people_person as P
Join (
Select P1.slug
From people_person As P1
Where Exists (
Select 1
From magazine_author As ma1
Where ma1.person_id = P1.id
Union All
Select 1
From podcast_episode_guests As pod1
Where pod1.person_id = P1.Id
Union All
Select 1
From blogs_blog_authors As b1
Where b1.person_id = P1.Id
)
Group By P1.slug
Having Count(*) > 1
) As dup_slugs
On dup_slugs.slug = P.slug
Order By P.last_name, P.first_name, P.id

关于sql - 我如何使用 SQL 来选择重复记录以及相关项目的计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2930829/

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