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

标签 mysql node.js performance query-optimization

我正在编写一个统计应用程序,我需要查询数据库以了解客户的每月收入,因此我需要查看该月每个订阅的天数。问题是我需要告诉他上个月的开始和结束,但由于时钟差异,我无法发送系统时间。它必须是它自己的。我无法使用 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

它们将在 session 结束时丢失(当您断开连接时)。

附录

@variables 是 session 本地的(即连接本地的)。因此每个连接可以使用不同的值。

关于mysql - 在 Mysql 中缓存月末和月初。 Node.js 中的 Mysql 变量重新定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32205199/

相关文章:

Android Recyclerview vs ListView with Viewholder

c#悖论: Converting List to Array is Iterating more efficient?

PHP PDO 包装器更新 +1

php - 通过 SQL Laravel 更新多行多表

node.js heroku - app/web.1 : Error: no template specified

node.js - 如何使用 Node 将 webpack 输出为字符串

mysql - MySQL、PostgreSQL、SQLite中数据库列类型的比较? (交叉映射)

PHP 登录 - 从数据库获取用户数据或存储在 session 中?

node.js - 是否可以使用nodejs crypto在随机位置进行解密?

Python-什么词可以删除最多的连续字母并且仍然是字典有效词?