解决SQL跨同名表列执行COUNT(DISTINCT)除法的歧义错误
解决SQL歧义列错误的方案
错误原因很直接:你用到的两张表employee和employee_1都有id字段,写COUNT(DISTINCT id)时没说明这个id属于哪张表,数据库没法判断该取哪个表的字段,所以报了歧义错误。
解决方法就是给id字段指定所属的表,有两种常用写法:
- 直接用表名指定字段:
SELECT COUNT(DISTINCT employee.id) / COUNT(DISTINCT employee_1.id) FROM employee, employee_1
- 给表起别名简化代码:
SELECT COUNT(DISTINCT e.id) / COUNT(DISTINCT e1.id) FROM employee e, employee_1 e1
另外提醒一句:用逗号连接两张表会产生笛卡尔积(两张表所有行两两组合),如果你的业务逻辑不需要这种全组合,记得加上关联条件,比如用JOIN语法:
SELECT COUNT(DISTINCT e.id) / COUNT(DISTINCT e1.id) FROM employee e JOIN employee_1 e1 ON e.id = e1.id -- 根据实际业务调整关联规则
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

