sql - 使用 join 时出错,join 会产生错误
问题描述
我正在尝试创建组并使用下表进行连接,但我得到了一个
ORA-00918: 列定义不明确
错误。
任何想法如何解决?
SELECT staffn, job, COUNT(*)"staffcount", AVG(sal)"AverageSal"
FROM staff, shop
WHERE staff.shopno= shop.shopno
GROUP BY shopno, job;
解决方案
您的意思是包括staffn
在您的选择中吗?我猜这对于一行来说是独一无二的,staff
并且会使选择平均值(或任何其他聚合)sal
有点没用(如果你确实想这样做,你需要将它包含在 group by 中)。我认为您真的打算在您的组中选择同一列。
您的错误是告诉您 Oracle 不知道应该从哪里获取列,查询中的多个行源可以提供它。完整的报错信息也会明确这是指哪一列,但我们已经可以看到,至少shopno
是共享的,我们可以任意取自staff
.
SELECT staff.shopno, job, COUNT(*)"staffcount", AVG(sal)"AverageSal"
FROM staff, shop
WHERE staff.shopno= shop.shopno
GROUP BY staff.shopno, job;
推荐阅读
- php - 由于 PHP 中的长 URL 导致关键字中断
- python - 隔离符号表达式中的变量
- swagger - 对 Swagger 2 使用任何方法
- java - 使用 Algebird 库时,如何使用 Java lambda 返回字节数组?
- sql - 尝试根据日期范围查询数据,但仅查询一个时间点
- r - 错误:尝试在 jupyter notebook 中使用 olsrr 库
- node.js - 为什么在线几个小时后出现 503 错误?节点/快递
- reactjs - 查看未找到名称 div 的配置
- c - 通过strtok将ac字符串分解成token
- android - 如何防止在 ViewPager2 中滚动时单击?