MySQL重用的变量输出为空
我正在使用以下SQL。第1列、第2列给出的输出类似于as 122.5014和4.2857;但最后一列给出的输出为NULL,尽管我预期为48.9266 SQL输入: 输出:MySQL重用的变量输出为空,mysql,sql,variables,null,user-defined,Mysql,Sql,Variables,Null,User Defined,我正在使用以下SQL。第1列、第2列给出的输出类似于as 122.5014和4.2857;但最后一列给出的输出为NULL,尽管我预期为48.9266 SQL输入: 输出: 当使用聚合函数计算并在表达式中使用时,用户变量的输出是不可预测的。因此,您的查询不起作用 例如: 因此,您必须首先更改查询以计算工作小时数,然后在内部查询中更改为周数,然后在外部查询中更改为计算DutyDistance。不需要用户变量 例如: SELECT ( SELECT @h := ( SUM( ( TIME_TO_SE
当使用聚合函数计算并在表达式中使用时,用户变量的输出是不可预测的。因此,您的查询不起作用 例如: 因此,您必须首先更改查询以计算工作小时数,然后在内部查询中更改为周数,然后在外部查询中更改为计算DutyDistance。不需要用户变量 例如:
SELECT (
SELECT @h := ( SUM( (
TIME_TO_SEC( TIMEDIFF( `stop` , `start` ) ) /3600 ) )
)
) AS `HoursWorked` , (
SELECT @w := ( TIMESTAMPDIFF(
DAY , MIN( `start` ) , MAX( `stop` ) ) /7 )
) AS `InWeeks` , (
SELECT (
((@w *40) - ( @h ))
)
) AS `DutyDistance`
FROM `work_table`
HoursWorked | InWeeks | DutyDistance
------------------------------------
122.5014 | 4.2857 | NULL
mysql> create table tbl_so_q23870035( i int );
Query OK, 0 rows affected (0.48 sec)
mysql> insert into tbl_so_q23870035 values( 2 ), ( 4 ), ( 9 ), ( 6 ), ( 15 );
Query OK, 5 rows affected (0.13 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql> select @s:=sum(i) as s, @s*2 as s2 from tbl_so_q23870035;
+------+------+
| s | s2 |
+------+------+
| 36 | NULL |
+------+------+
1 row in set (0.00 sec)
mysql> select s, s*2 as s2
-> from (
-> select sum(i) as s from tbl_so_q23870035
-> ) aggregated_data;
+------+------+
| s | s2 |
+------+------+
| 36 | 72 |
+------+------+
1 row in set (0.00 sec)
select `HoursWorked`, `InWeeks`, ( `InWeeks` * 40 - `HoursWorked` ) AS `DutyDistance`
from (
select SUM( TIME_TO_SEC( TIMEDIFF( `stop`, `start` ) ) / 3600 ) AS `HoursWorked`
, TIMESTAMPDIFF( DAY , MIN( `start` ), MAX( `stop` ) ) / 7 AS `InWeeks`
FROM `work_table`
) aggregated_data