检查mysql查询是否为问题提供了最佳解决方案
列出在该公司工作的所有员工的姓名和地址 代码为1且小时工资率为40欧元的员工类型 我想知道这是否是从上述问题中检索信息的最佳方式检查mysql查询是否为问题提供了最佳解决方案,mysql,relational-database,Mysql,Relational Database,列出在该公司工作的所有员工的姓名和地址 代码为1且小时工资率为40欧元的员工类型 我想知道这是否是从上述问题中检索信息的最佳方式 SELECT e.EmployeeName , e.EmployeeAddress FROM Employee e JOIN EmployeeType et ON e.EmployeeType = et.EmployeeType HAVING e.EmployeeCode = (1) AND et.TotalPay = (40); 我不会在这个查询中使用HAVING
SELECT e.EmployeeName , e.EmployeeAddress
FROM Employee e JOIN EmployeeType et ON e.EmployeeType = et.EmployeeType
HAVING e.EmployeeCode = (1) AND et.TotalPay = (40);
我不会在这个查询中使用HAVING,我更喜欢WHERE条件或在join上添加更多参数。你可以读到关于这个的 Having与WHERE条件略有不同,因为它是在查询结果之后应用的 具有简单WHERE条件的第一解
SELECT e.EmployeeName , e.EmployeeAddress
FROM Employee e
INNER JOIN EmployeeType et ON e.EmployeeType = et.EmployeeType
WHERE e.EmployeeCode = '1' AND et.TotalPay = '40';
第二个解决方案在连接时添加更多参数
SELECT e.EmployeeName , e.EmployeeAddress
FROM Employee e
INNER JOIN EmployeeType et ON (e.EmployeeType = et.EmployeeType AND et.TotalPay = '40')
WHERE e.EmployeeCode = '1' ;
它没有,它的HAVINGOpps拼写错误,它看起来可以与(编辑的)形式分开吗?
有…
是错误的:只在分组后使用有
。相反,把放在…
,就像@Zeljka的答案一样。有很多方法可以编写这个查询;它们可能同样有效(如果您的SQL引擎是智能的)。询问“最佳解决方案”需要一个价值判断:“最佳”的标准是什么?第一个解决方案的JOIN
位于相同命名的列上。因此您可以使用自然连接
。但如果两个表之间存在其他同名列,则可能会出现错误@Liam的q应该说明表的完整模式。