gpt4 book ai didi

mysql - SQL:计算一个表的某个字段到同表的另一个字段的重复次数

转载 作者:行者123 更新时间:2023-11-29 04:45:19 26 4
gpt4 key购买 nike

我有这样的表:

| ID | REAGENT |
|----|---------|
| 1 | 0 |
| 2 | 0 |
| 3 | 1 |
| 4 | 2 |
| 5 | 2 |
| 6 | 1 |
| 7 | 3 |
| 8 | 1 |
| 9 | 4 |
| 10 | 3 |
| 11 | 6 |
| 12 | 4 |
| 13 | 1 |
| 14 | 0 |
| 15 | 0 |
| 16 | 2 |
| 17 | 11 |
| 18 | 23 |
| 19 | 11 |
| 20 | 7 |
| 21 | 6 |
| 22 | 10 |
| 23 | 1 |
| 24 | 11 |
| 25 | 15 |
| 26 | 4 |

并且我使用此查询来计算同一表中“试剂”字段中每个“ID”字段的重复次数

  SELECT 
b.ID,(SELECT count(a.reagent)FROM mytb AS a WHERE a.reagent=b.ID ) AS reagentCount
FROM mytb AS b

| ID | REAGENTCOUNT |
|----|--------------|
| 1 | 5 |
| 2 | 3 |
| 3 | 2 |
| 4 | 3 |
| 5 | 0 |
| 6 | 2 |
| 7 | 1 |
| 8 | 0 |
| 9 | 0 |
| 10 | 1 |
| 11 | 3 |
| 12 | 0 |
| 13 | 0 |
| 14 | 0 |
| 15 | 1 |
| 16 | 0 |
| 17 | 0 |
| 18 | 0 |
| 19 | 0 |
| 20 | 0 |
| 21 | 0 |
| 22 | 0 |
| 23 | 1 |
| 24 | 0 |
| 25 | 0 |
| 26 | 0 |

这个查询有一个正确的响应但是太慢了!

我想知道是否有更快的计算方法?感谢您的指导。

最佳答案

您的查询看起来还不错。我认为您的问题是缺少适当的索引。

如果您只是在 reagent 列上添加索引,它应该工作得更快:

CREATE INDEX mytb_reagent_ix ON mytb(reagent);

确认您的查询是否快速执行的最简单方法是使用 EXPLAIN statement 查看执行计划并确保主键或辅助键用于所有查询步骤 - 我在这个 SQLFiddle Demo 中为您完成了.

关于mysql - SQL:计算一个表的某个字段到同表的另一个字段的重复次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19895766/

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