在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):每个派生表必须具有自己的别名
答案 0 :(得分:1)
每个派生表(AKA子查询)确实必须具有别名。即括号中的每个查询都必须被赋予一个别名(无论是AS还是其他),可以在外部查询的其余部分中使用它来引用它。是的结果是一个别名。它可以是任何名称代替结果,例如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;