mysql - 为什么这个查询不起作用而这个查询起作用?
问题描述
在 MySQL Shell 中,两个几乎相同的查询。一个有效,一个无效。区别是一个关键词。这是为什么?
工作查询只会根据您在子查询中使用的限制数获得您选择的薪水。所以“限制4”会给你第四高的薪水。
SELECT SALARY
FROM (
SELECT DISTINCT SALARY
FROM TBLEMPLOYEE
ORDER BY SALARY DESC LIMIT 3
) RESULT
ORDER BY SALARY LIMIT 1
这成功地给出了第三高的薪水。
如果我删除“结果”这个词,它就不再起作用了。结果有什么作用?那是别名吗?我明白了:错误 1248 (42000):每个派生表都必须有自己的别名
解决方案
每个派生表(AKA 子查询)确实必须有一个别名。即,必须为括号中的每个查询指定一个别名(不管是什么),该别名可用于在外部查询的其余部分中引用它。是的结果是一个别名。它可以是任何名称来代替结果,如 myalias或者是其他东西。
SELECT SALARY
FROM (
SELECT DISTINCT SALARY
FROM TBLEMPLOYEE
ORDER BY SALARY DESC LIMIT 3
) AS RESULT
ORDER BY SALARY LIMIT 1
更多示例
SELECT ID
FROM (SELECT ID,
msisdn
FROM (SELECT * FROM TT2) as myalias
) as anotheralias;
推荐阅读
- shopify - 是否可以仅使用 shopify api 在单独的服务器上构建自定义站点
- openstack - 使用 openstack-client,具有静态 IP 的接口不会自动出现
- c - 如何让我的代码从文件中读取任意数量的浮点数的输入?
- python - 我的代码用了太长时间,如何修改它?
- entity-framework-core - EF Core 自动将表名从设置更改为设置
- python - 无法将熊猫字符串转换为数字
- python - Heroku 无法满足要求 tensorflow==2.3.0
- python - Python多处理进程未启动
- regex - grep 正则表达式,用于以特定长度的两个字符开头的字符串
- python - 如何选择最小距离的行