首页 > 解决方案 > 如何在 sql 查询中按要求修复组?

问题描述

我有一个 SQL 查询:

SELECT A.Emp_ID, A.Emp_Name 
FROM Employee A 
INNER JOIN Assignment B on A.Emp_ID = B.Emp_ID 
WHERE B.Emp_ID 
HAVING COUNT(*) > 1;

哪个返回了错误:

SQLException:您的 SQL 语法有错误;
检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“group by Emp_ID”附近使用正确的语法

我查了一下,发现这里有一篇文章谈到了它,以及该怎么做。

我把它改成这样:

SELECT A.Emp_ID, A.Emp_Name 
FROM Employee A 
INNER JOIN Assignment B ON A.Emp_ID = B.Emp_ID 
WHERE B.Emp_ID 
HAVING COUNT(*) > 1 
GROUP BY Emp_ID;

对我来说,它看起来与它应该的完全一样,所以我很困惑为什么它不起作用。有人可以帮我解决这个问题吗?

谢谢你。

标签: mysqlselect

解决方案


大概你想要:

SELECT e.Emp_ID, e.Emp_Name
FROM Employee e INNER JOIN 
     Assignment a
     ON e.Emp_ID = a.Emp_ID 
GROUP BY e.Emp_ID, e.Emp_Name
HAVING COUNT(*) > 1;

笔记:

  • WHERE条款是无用的。
  • 你需要一个GROUP BY.
  • 使用有意义的表别名而不是任意字母。

推荐阅读