MySQL - UNION ALL在同一个表上查询

时间:2014-08-20 10:13:52

标签: mysql union alias

我想使用我在this网站上找到的一些查询 - 我根据自己的目的对其进行了调整:

SELECT * FROM 
(
(
SELECT id, lng FROM stations WHERE lng >= 18.123 ORDER BY lng LIMIT 1
) AS result1
UNION ALL
(
SELECT id, lng FROM stations WHERE lng < 18.123 ORDER BY lng LIMIT 1
) AS result2
)
ORDER BY abs(18.123-lng) LIMIT 1;

但我收到了错误Syntax error, unexpected AS, expecting UNION_SYM or ')'

当我尝试不使用别名时,我(显然)不断收到错误Error Code: 1248. Every derived table must have its own alias

你可以帮我弄清楚我做错了什么吗?提前谢谢。

1 个答案:

答案 0 :(得分:3)

您需要为最外面的表添加别名:

SELECT * FROM 
(
    (SELECT id, lng FROM stations WHERE lng >= 18.123 ORDER BY lng LIMIT 1)
    UNION ALL
    (SELECT id, lng FROM stations WHERE lng < 18.123 ORDER BY lng LIMIT 1)
) AS result12
ORDER BY abs(18.123-lng) LIMIT 1;
编辑:忘记了内部查询的括号。