gpt4 book ai didi

mysql - 如何在不使用distinct的情况下避免一对多关联中的重复记录?

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

我有两个表issuestime_entries,它们之间有一对多 关联。我们可以为一个问题创建多个time_entries

这里是一些示例数据,

问题

id  |  subject  |  description
------------------------------
1 | test | test
2 | test1 | test1
3 | test2 | test2

时间条目

id  | issue_id  |  hours | spent_on   | created_on
---------------------------------------------------
1 | 1 | 2 | 2016-12-23 | 2016-12-23
2 | 1 | 2 | 2016-12-23 | 2016-12-23
3 | 2 | 3 | 2016-12-23 | 2016-12-23
4 | 2 | 5 | 2016-12-23 | 2016-12-23
5 | 4 | 4 | 2016-12-23 | 2016-12-23

现在我想获取在特定日期之后花费时间的所有问题

SELECT *
FROM "issues"
INNER JOIN "time_entries" ON "time_entries"."issue_id" = "issues"."id"
WHERE time_entries.created_on > '2016-12-22'

它为问题返回多条记录,其中有多个条目。

id   | subject  | description
-----------------------------
1 | test | test
1 | test | test
2 | test1 | test1
2 | test1 | test1
3 | test2 | test2

如何在不使用 distinct 的情况下避免这些重复记录。由于我的应用程序中的技术原因,我无法使用 distinct

任何帮助将不胜感激。

最佳答案

一种选择是使用 SELECT DISTINCT :

SELECT DISTINCT t1.id,
t1.subject,
t1.description
FROM issues t1
INNER JOIN time_entries t2
ON t2.issue_id = t1.id
WHERE t2.created_on > '2016-12-22'

如果你不能使用DISTINCTGROUP BY , 那么另一种选择是使用一个子查询来聚合 time_entries 中的问题表并确定哪些问题符合要求。像这样:

SELECT t1.id,
t1.subject,
t1.description
FROM issues t1
INNER JOIN
(
SELECT issue_id
FROM time_entries
GROUP BY issue_id
HAVING SUM(CASE WHEN created_on > '2016-12-22' THEN 1 ELSE 0 END) > 0
) t2
ON t2.issue_id = t1.id

关于mysql - 如何在不使用distinct的情况下避免一对多关联中的重复记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41296451/

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