我写了这个查询:
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代码为
执行时,可能尚未确定列值。