我写了这个查询:

SELECT e.evt_end, UNIX_TIMESTAMP(e.evt_end) AS unixTimeEND FROM events AS e
WHERE UNIX_TIMESTAMP(e.evt_end) > '.time().' ORDER BY unixtimeEND;


我使用两次函数UNIX_TIMESTAMP()来获得相同的结果,这也许是浪费。
有没有更好的办法?我想到的是:

SELECT e.evt_end, UNIX_TIMESTAMP(e.evt_end) AS unixTimeEND FROM events AS e
WHERE unixTimeEND > '.time().' ORDER BY unixtimeEND;


但是没用

最佳答案

显然,您的第二个查询将无法工作。它将给出在WHERE子句中找不到的列'unixTimeEND'


  您只能在GROUP BY,ORDER BY或HAVING中使用列别名
  条款。
  
  标准SQL不允许您在WHERE中引用列别名
  条款。施加此限制是因为当WHERE代码为
  执行时,可能尚未确定列值。

09-20 18:02