WHERE条件内子查询的总和

约翰·西尼格

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

这是我的查询代码:

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的结果。

子查询有可能吗?

欢迎任何帮助。谢谢。

戈登·利诺夫(Gordon Linoff)

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;

子句中timeinHAVING应该解释为中定义的别名SELECT

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

另外,我认为LEFT JOIN这里不需要-除非您的departments中没有部门

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

sql总和与where条件

来自分类Dev

来自同一表和多个where条件的多个总和查询

来自分类Dev

MySQL查询WHERE条件

来自分类Dev

有条件的子查询总和

来自分类Dev

使用值的总和作为条件(SQL查询)

来自分类Dev

使用值的总和作为条件(SQL查询)

来自分类Dev

有条件的子查询总和

来自分类Dev

连接内子查询中的MySQL重复列

来自分类Dev

NHibernate与WHERE条件成对查询

来自分类Dev

SQL Server查询:有条件地获取总和

来自分类Dev

带条件组和总和的Ransack搜索查询

来自分类Dev

MySQL查询分组,然后根据条件而不是总和求和

来自分类Dev

使用不同列的总和创建条件查询

来自分类Dev

MySQL查询进行分组,然后根据条件而不是总和求和

来自分类Dev

分组依据查询MySQL中的条件总和

来自分类Dev

当我有总和时忽略WHERE子句的查询

来自分类Dev

SQL查询中带有总和的Where子句

来自分类Dev

SQLite 子查询 where 子句中列的总和

来自分类Dev

选择每列具有不同WHERE条件的行的总和

来自分类Dev

条件总和

来自分类Dev

带条件子查询的where语句

来自分类Dev

在SQL随机查询中添加where条件

来自分类Dev

使用WHERE条件,查询结果中列名

来自分类Dev

使用条件子查询的Postgresql WHERE子句

来自分类Dev

使用where条件的SQL子查询

来自分类Dev

SQLite:从查询中删除多个WHERE条件

来自分类Dev

避免在子查询中重复WHERE条件

来自分类Dev

SQL 连接子查询 where 条件

来自分类Dev

基于多个where条件的SQL查询