簡體   English   中英

Sqlalchemy 中的用戶定義變量支持

[英]User-defined variables support in Sqlalchemy

SQLAlchemy 是否支持用戶定義的變量?

https://dev.mysql.com/doc/refman/5.6/en/user-variables.html

問題:我試圖獲取連續兩行之間的時間差。 我可以通過使用用戶定義的變量編寫原始 SQL 查詢來做到這一點。 在不編寫原始 SQL 查詢的情況下,這可以在 SQLAlchemy 中進行嗎?

我的表是這樣的:

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

的邏輯:我們選擇2行(由date從表拷貝的用戶值) t1t2 (與行中的t2具有較早date值),並將復印t3檢查,這些行是真的相鄰(之間不存在第三行他們)。

此查詢不使用 UDV,可以轉換為 SQLAlchemy 語法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM