首页 > 解决方案 > 有没有办法简化这个 SQL 函数?我觉得它是多余的

问题描述

只是不确定我是否以最好的方式做到这一点。有没有办法缩短它?它适用于我正在寻找的东西,但我试图学习并且不确定这个陈述是否是多余的?

select first_name, last_name, SUM(amount) from staff s, payment p where s.staff_id = p.staff_id and p.staff_id = "2" ;

标签: sql

解决方案


我建议这样写:

select s.first_name, s.last_name, sum(p.amount)
from staff s join
     payment p 
     on s.staff_id = p.staff_id 
where p.staff_id = 2
group by s.first_name, s.last_name;

我没有看到任何“冗余”。但我确实看到了改进的空间:

  • 您的查询需要一个GROUP BY.
  • 始终使用正确、明确、标准的可读JOIN语法。
  • 切勿FROM子句中使用逗号。
  • 不要转义数字。大概,staff_id是一个数字,所以只需比较2not "2"
  • 限定所有列引用,以便清楚它们来自哪个表。
  • GROUP BY可能应该包括staff_id,以防两个工作人员有相同的名字。

推荐阅读