我在下面有一个查询,用于检索在给定时间(以小时为单位)内未更新的记录,并按经过时间排序:
SELECT TABLE.Key, TIMESTAMPDIFF(HOUR, TABLE.Date_last_consulted, CURRENT_TIMESTAMP)
FROM TABLE WHERE TIMESTAMPDIFF(HOUR, TABLE.Date_last_consulted,
CURRENT_TIMESTAMP) <= 7 ORDER BY TIMESTAMPDIFF(HOUR, TABLE.Date_last_consulted,
CURRENT_TIMESTAMP);
正如您所看到的,它多次调用TIMESTAMPDIFF,这不是很有效,因为所有这些调用都会导致无用的SQL计算。
我想知道是否有办法重复使用计算,因此只处理一次?
非常感谢你的帮助。
Florent的
答案 0 :(得分:0)
SELECT
t.Key, t.dif
FROM (
SELECT key, TIMESTAMPDIFF(HOUR, TABLE.Date_last_consulted, CURRENT_TIMESTAMP) dif
FROM TABLE
) t
WHERE
t.dif <= 7
ORDER BY
t.dif