SQL在select子句中重复长公式

时间:2018-01-03 23:22:00

标签: mysql sql

SELECT TIMESTAMPDIFF(SECOND,since,until) dif,
       DATE_ADD(since,INTERVAL TIMESTAMPDIFF(SECOND,since,until)/2 SECOND)
FROM....

通过选择重复TIMESTAMPDIFF(...)。有没有办法简化/重用而不重复整个公式?别名“dif”在SELECT参数

中无效

2 个答案:

答案 0 :(得分:3)

您可以使用SELECT在查询中使用别名:

SELECT TIMESTAMPDIFF(SECOND,since,until) dif,
       DATE_ADD(since,INTERVAL (SELECT dif)/2 SECOND)
FROM....

答案 1 :(得分:3)

每当我在select中进行繁琐的计算时,我都喜欢子查询:

SELECT DATE_ADD(since, INTERVAL dif/2 SECOND) FROM (
    SELECT TIMESTAMPDIFF(SECOND,since,until) dif
    FROM....
) AS A

作为一个注释,@ clinomaniac的答案非常适合MySQL,但并未被所有RDBMS识别。