gpt4 book ai didi

mysql - 选择具有相同 ID 的所有行

转载 作者:行者123 更新时间:2023-11-30 22:38:43 24 4
gpt4 key购买 nike

我有这张表:

ID | Part
1 | A
1 | B
1 | C
2 | B
2 | C
3 | A
3 | D
3 | E
4 | B
4 | D

并且想要一个查询来获取所有具有 A 的 ID,并返回具有该 ID 的所有其他部分的列表。

例如:想要与 B 相关的零件:

Part | Count
A | 1
C | 2
D | 1

我目前拥有的:

SELECT * FROM tble WHERE ID IN (SELECT DISTINCT ID FROM tble t WHERE Part = ?)
GROUP BY Part ORDER BY COUNT(Part) DESC

这行得通,但速度很慢,我正在寻求改进,但遇到困难

最佳答案

您的查询并非不合理,尽管 distinct 是不必要的,我会使用 exists 而不是 in。并且,外部 select 需要为聚合固定

SELECT t.part, COUNT(*)
FROM tble t
WHERE EXISTS (SELECT 1 FROM tble t2 WHERE t2.ID = t.ID AND t2.Part = ?)
GROUP BY t.Part
ORDER BY COUNT(*) DESC;

然后,要优化此查询,您需要一个索引:

create index idx_tble_id_part on tble(id, part);

关于mysql - 选择具有相同 ID 的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31684173/

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