Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Mysql中缓存月底和月初。Node.js中Mysql变量的重新定义_Mysql_Node.js_Performance_Query Optimization - Fatal编程技术网

在Mysql中缓存月底和月初。Node.js中Mysql变量的重新定义

在Mysql中缓存月底和月初。Node.js中Mysql变量的重新定义,mysql,node.js,performance,query-optimization,Mysql,Node.js,Performance,Query Optimization,我正在编写一个统计应用程序,我需要查询客户每月收入的数据库,因此我需要查看每个订阅在该月的天数。问题是我需要告诉他上个月的开始和结束时间,由于时钟的差异,我无法发送我的系统时间。它必须是它自己的。我不能使用Mysql中的变量,因为它会受到多个查询的影响,据我所知,它们可能被覆盖并导致错误 SELECT GREATEST ( LEAST ( x.period_end, y.period_end) - GREATEST ( x.period_start, y.period_start), 0 )

我正在编写一个统计应用程序,我需要查询客户每月收入的数据库,因此我需要查看每个订阅在该月的天数。问题是我需要告诉他上个月的开始和结束时间,由于时钟的差异,我无法发送我的系统时间。它必须是它自己的。我不能使用Mysql中的变量,因为它会受到多个查询的影响,据我所知,它们可能被覆盖并导致错误

SELECT GREATEST ( LEAST ( x.period_end, y.period_end) - GREATEST ( x.period_start, y.period_start), 0 ) 
from customer_invoice x, (SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 MONTH), '%Y-%m-01') AS period_start, 
LAST_DAY(DATE_ADD(NOW(), INTERVAL -1 MONTH)) AS period_end) y;
我需要知道是否有任何方法可以显式地告诉Mysql计算一次“y”并使用它。或者如果我可以告诉他使用对应于单个Mysql请求的变量

我使用的是一个Mysql包装器,它是在Node.js的标准包装器上编写的,根据我所知,如果一个查询定义了一个变量并正在执行,另一个查询出现并试图定义一个同名的变量,它会覆盖第一个变量,从而破坏第一个查询。我可以为每个变量使用自定义哈希名称,但我不想这样做。

执行一次:

SELECT @foo := this + that,
       @bar := other * stuff;
根据需要经常使用这些@变量:

SELECT ... @foo ... @bar .. @foo
当您断开连接时,它们将在会话结束时丢失

附录


@变量是会话的本地变量,即连接的本地变量。因此,每个连接都可以使用不同的值。

是的,但是当两个查询同时执行并且@foo变量需要不同的值时会发生什么情况?