SQL 查询可以在 from 子句中包含子查询吗?

时间:2021-03-23 00:05:10

标签: mysql sql

我编写了以下查询,旨在查找每个员工的所有工资的最大总和。出于某种原因,mysql 似乎不喜欢 from 子句中的子查询。

select max(sumwages)
from
(select staff.name, sum(wages) as sumwages
from staff, schedule
where staff.ssn = schedule.ssn
group by staff.ssn)

我还编写了这个更简单的查询来测试我的理论。这也给出了语法错误。我正在尝试做的事情是可能的还是我必须找到另一种方式?

select *
from (select ssn from staff)

2 个答案:

答案 0 :(得分:5)

是的。在 MySQL 中,这些被称为派生表。并且每个派生表都需要一个别名:

select max(sumwages)
from (select staff.name, sum(wages) as sumwages
      from staff join
           schedule
           on staff.ssn = schedule.ssn
      group by staff.ssn
     ) ss;

另请注意使用正确、明确、标准、可读的 JOIN 语法。 切勿FROM 子句中使用逗号。

答案 1 :(得分:1)

另外 - 您可以通过

避免子查询
select sum(wages) as sumwages
from staff, schedule
where staff.ssn = schedule.ssn
group by staff.ssn
ORDER BY sumwages DESC LIMIT 1

这也将给出具有最大总和的一行...

相关问题