MySQL - UNION ALL 与同一张表上的查询

标签 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 ')'

当我尝试不使用别名时,我(显然)不断收到错误错误代码: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/

相关文章:

c# - 是否可以在 XAML 中声明类型别名?

php - 在 php 中隐藏特定值

mysql - mac安装后无法使用mysql命令

mysql select 抛出错误为“无法写入”;表中的重复键

mysql - 如何在MySQL中通过查询优化获得组合结果?

bash - 如何使 Emacs 的 shell 模式源成为我的配置文件?

php - 使用 SELECT 查询将大型表导出到客户端计算机

c# - 如何将 Entity Framework 与 Union 和 Top N Percent 一起使用?

sql - 从两个表的并集中选择最高值

sql-server - OrderBy 中忽略别名