我想使用我在 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 ')'
当我尝试不使用别名时,我(显然)不断收到错误错误代码:1248。每个派生表都必须有自己的别名
你能帮我弄清楚我做错了什么吗?提前谢谢你。
最佳答案
您需要为最外层的表起别名,例如:
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;
编辑:忘记了内部查询周围的括号。
关于MySQL - UNION ALL 与同一张表上的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25402156/