繁体   English   中英

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

[英]Can SQL queries have subqueries in the from clause?

我编写了以下查询,该查询应该找到每个员工的所有工资的最大总和。 出于某种原因,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)

是的。 在 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子句中使用逗号。

此外 - 您可以通过以下方式避免子查询

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM