gpt4 book ai didi

mysql - 解决mysql查询

转载 作者:行者123 更新时间:2023-11-29 07:45:23 25 4
gpt4 key购买 nike

今天面试官问了我一个问题,内容如下我们有三个表,分别命名为表 A、B 和 C。

那些表是这样的

       A                        B                             C
------------------ -------------------------- ----------------------------
| ID | ProjectID | | ID | LocationID | aID | | ID | points | LocationID |
------------------ -------------------------- ----------------------------
| 1 | 15 | | 1 | 131 | 1 | | 1 | 123333 | 131 |
| 2 | 15 | | 2 | 132 | 1 | | 2 | 123223 | 132 |
| 3 | 15 | | 3 | 133 | 1 | | 3 | 522 | 211 |
| 4 | 12 | | 4 | 134 | 2 | | 4 | 25 | 136 |
------------------ | 5 | 136 | 2 | | 5 | 25 | 133 |
| 6 | 137 | 3 | | 6 | 25 | 134 |
| 7 | 138 | 1 | | 7 | 25 | 135 |
-------------------------- ----------------------------

现在他让我编写一个查询,对项目为 15 的那些位置的点数进行求和。

首先,我编写了查询以从表 A 中获取 ID,如下所示

SELECT ID from A where projectID  = 15

然后我将这个结果传递到表 b 查询中,就像这样

SELECT LocationID FROM B WHERE aID IN ( SELECT ID from A where projectID  = 15 )

然后我像这样计算这些位置的总和

SELECT SUM(points) from C where LocationID IN(SELECT LocationID FROM B WHERE aID IN ( SELECT ID from A where projectID = 15))

我的结果很好,查询是正确的。但他拒绝了我的回答,说这个嵌套的 IN 子句会减慢整个过程,因为当我们有数千条记录时。然后他又给了我一次机会来回顾我的答案,但我无法弄清楚。

有没有办法优化这个,或者有其他方法可以做到这一点。有什么帮助吗?谢谢

最佳答案

试试这个可能会解决你的问题。

Select SUM(C.points) FROM C JOIN B ON C.LocationID = B.LocationID JOIN A ON B.aID = A.ID where A.ProjectID = 15 GROUPBY A.ProjectID

关于mysql - 解决mysql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27940324/

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