必须有一种更有效的方法来做到这一点,但我对 mySQL 还不够熟悉,还不知道要研究哪些术语。我一直在研究 AS 关键字。
下面是我的工作查询。看看我如何必须多次导出持续时间 (TIME_TO_SEC(TIMEDIFF( FinishTime,StartTime))。是否可以导出一次并在此查询中重用它?
table: AuraUsers
fields: ID, StartTime, FinishTime, Completed
SELECT
TIME_TO_SEC(
TIMEDIFF(
FinishTime,
StartTime
)
)
AS json
FROM AuraUsers
WHERE (
StartTime IS NOT NULL
AND
FinishTime IS NOT NULL
AND
Completed=7
AND
TIME_TO_SEC(
TIMEDIFF(
FinishTime,
StartTime
)
) > 0
AND
TIME_TO_SEC(
TIMEDIFF(
FinishTime,
StartTime
)
) < 90275
)
ORDER BY TIME_TO_SEC(
TIMEDIFF(
FinishTime,
StartTime
)
) DESC
LIMIT 0,535;
最佳答案
使用HAVING
子句,但它实际上并没有重用,每次在查询中使用别名时它都会评估整个表达式
SELECT
TIME_TO_SEC(
TIMEDIFF(
FinishTime,
StartTime
)
)
AS json
FROM AuraUsers
HAVING (
StartTime IS NOT NULL
AND
FinishTime IS NOT NULL
AND Completed=7
AND json > 0
AND json < 90275
)
ORDER BY json DESC
LIMIT 0,535;
关于mysql - 如何在查询中重用派生值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23942788/