为什么这个查询不起作用,而这个却可以呢?

时间:2019-07-11 18:17:53

标签: mysql sql

在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):每个派生表必须具有自己的别名

1 个答案:

答案 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;