MySQL - 在同一张表上使用UNION ALL查询

3

我想使用在这个网站上找到的一些查询语句 - 我为自己的目的进行了调整:

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;

但是我遇到了一个错误 语法错误,意外的AS,期望UNION_SYM或')'

如果我不使用别名来尝试完成它,我(显然)会一直出现错误 错误代码:1248。每个派生表都必须有自己的别名

请帮助我弄清楚我做错了什么?提前谢谢。

1个回答

7
您需要给最外层的表格起个别名,方法如下:

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;

编辑:忘记在内部查询周围加上括号。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接