gpt4 book ai didi

mysql - WHERE 条件内子查询的总和

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

您好,我想知道如何访问子查询的结果并将其用作主查询中的条件

这是我的查询代码:

SELECT m.*, dp.department as dep, 
(SELECT SEC_TO_TIME( SUM( TIME_TO_SEC( `time` ) ) ) FROM time_management tm WHERE tm.user = m.id AND MONTH(`date`) = MONTH(CURRENT_DATE()) AND YEAR(`date`)= YEAR(CURRENT_DATE()) ) as time
FROM members m
LEFT JOIN department dp ON m.department = dp.id
WHERE m.department = $departmentvar AND tm.time > 34

正如你所看到的,我试图在 WHERE 子句中使用最后一个条件来仅选择 SUM 大于 34 的结果。

子查询可以吗?

欢迎任何帮助。谢谢。

最佳答案

MySQL 扩展了 HAVING 子句的使用,因此您可以将查询编写为:

SELECT m.*, dp.department as dep, 
(SELECT SEC_TO_TIME( SUM( TIME_TO_SEC( `time` ) ) )
FROM time_management tm
WHERE tm.user = m.id AND
MONTH(`date`) = MONTH(CURRENT_DATE()) AND
YEAR(`date`) = YEAR(CURRENT_DATE())
) as time
FROM members m LEFT JOIN
department dp
ON m.department = dp.id
WHERE m.department = $departmentvar
HAVING time > 34;

HAVING 子句中的 time 应解释为 SELECT 中定义的别名。

在大多数其他数据库中,您将使用子查询。然而,MySQL 实现了子查询,这会产生额外的开销。

此外,我认为这里不需要 LEFT JOIN ——除非您的部门不在 departments 表中。

关于mysql - WHERE 条件内子查询的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41450806/

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