Sqlalchemy 中的用户定义变量支持
User-defined variables support in Sqlalchemy
SQLAlchemy 是否支持用户定义的变量?
https://dev.mysql.com/doc/refman/5.6/en/user-variables.html
问题:我正在尝试获取两个连续行之间的时间差。我可以通过使用用户定义的变量编写原始 SQL 查询来做到这一点。这可以在 SQLAlchemy 中完成而无需编写原始 SQL 查询吗?
我的table是这样的:
id user_id date
1. user_1 01-11-2021 00:00
2. user_1 01-11-2021 00:00
3. user_1 01-11-2021 00:01
4. user_2 01-11-2021 00:00
输出类似于
id user_id time_diff
1. user_1 NULL
2. user_1 0
3. user_1 1
4. user_2 NULL
执行所需任务且不使用 UDV 且适用于 MySQL 5.6 的 SQL 查询如下所示:
SELECT t1.*, TIMESTAMPDIFF(SECOND, t1.date, t2.date) time_diff
FROM table t1
LEFT JOIN table t2 ON t1.user_id = t2.user_id
AND t1.date > t2.date
LEFT JOIN table t3 ON t1.user_id = t3.user_id
AND t1.date > t3.date
AND t3.date > t2.date
WHERE t3.id IS NULL
逻辑:我们 select 2 行(按 date
值)为来自 table 的用户复制 t1
和 t2
(以及行t2
具有较早的 date
值),副本 t3
检查这些行是否真的相邻(它们之间没有第三行)。
此查询不使用 UDV,可以转换为 SQLAlchemy 语法。
SQLAlchemy 是否支持用户定义的变量?
https://dev.mysql.com/doc/refman/5.6/en/user-variables.html
问题:我正在尝试获取两个连续行之间的时间差。我可以通过使用用户定义的变量编写原始 SQL 查询来做到这一点。这可以在 SQLAlchemy 中完成而无需编写原始 SQL 查询吗?
我的table是这样的:
id user_id date
1. user_1 01-11-2021 00:00
2. user_1 01-11-2021 00:00
3. user_1 01-11-2021 00:01
4. user_2 01-11-2021 00:00
输出类似于
id user_id time_diff
1. user_1 NULL
2. user_1 0
3. user_1 1
4. user_2 NULL
执行所需任务且不使用 UDV 且适用于 MySQL 5.6 的 SQL 查询如下所示:
SELECT t1.*, TIMESTAMPDIFF(SECOND, t1.date, t2.date) time_diff
FROM table t1
LEFT JOIN table t2 ON t1.user_id = t2.user_id
AND t1.date > t2.date
LEFT JOIN table t3 ON t1.user_id = t3.user_id
AND t1.date > t3.date
AND t3.date > t2.date
WHERE t3.id IS NULL
逻辑:我们 select 2 行(按 date
值)为来自 table 的用户复制 t1
和 t2
(以及行t2
具有较早的 date
值),副本 t3
检查这些行是否真的相邻(它们之间没有第三行)。
此查询不使用 UDV,可以转换为 SQLAlchemy 语法。