gpt4 book ai didi

mysql - 获取具有多行的唯一记录组

转载 作者:行者123 更新时间:2023-11-29 12:13:18 30 4
gpt4 key购买 nike

我在 MySQL 中有下表:

表分数:

id integer
score integer
scoredate date

复合(id,scoredate)是唯一的

id  score scoredate
--+----+------
1 | 2 | 2015-01-01
1 | 2 | 2015-01-02
1 | 3 | 2015-01-03
1 | 2 | 2015-01-04
2 | 3 | 2015-01-01
2 | 3 | 2015-01-02
2 | 3 | 2015-01-03
2 | 3 | 2015-01-04
3 | 1 | 2015-01-01
3 | 1 | 2015-01-02
3 | 1 | 2015-01-03
3 | 1 | 2015-01-04
4 | 3 | 2015-01-01
4 | 3 | 2015-01-02
4 | 3 | 2015-01-03
4 | 1 | 2015-01-04

我想识别分数至少改变过一次的“id”。

id  score
--+----
1 | 2
1 | 3
4 | 3
4 | 1

我可以使用复杂的子查询来做到这一点,但我想知道是否有办法使用更简单的查询来做到这一点。

例如,通过以下查询,我得到了我们关心的 id。我可以执行另一个子查询或与此查询的输出连接以获得上面的结果,但我希望构建一个更简单的查询。以下实际上已经是 2 次传递(2 个查询),并且执行另一个连接或子查询,这意味着引擎将处理第 3 次传递或查询:

SELECT `id` FROM (SELECT `id`, `score` FROM `scores` GROUP BY `id`, `score`) AS sq GROUP BY `id` HAVING count(1) > 1

我希望在 1-2 次传递/查询内得到结果。

最佳答案

SELECT distinct id, score
FROM Scores
where id in (select id from Scores group by id having count(distinct score) > 1);

这会给你你想要的结果。

关于mysql - 获取具有多行的唯一记录组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30292627/

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