Mysql 将左连接写入子查询
如何将这个左连接查询作为子查询Mysql 将左连接写入子查询,mysql,sql,Mysql,Sql,如何将这个左连接查询作为子查询 SELECT d.department, COUNT(e.employeeid) FROM department d LEFT JOIN employee e ON d.id = e.employeeid GROUP BY d.department ORDER BY d.department; 这是我尝试过的,但不起作用 SELECT d.department FROM department AS d HAVING COUNT(e.employeeid)
SELECT d.department, COUNT(e.employeeid)
FROM department d
LEFT JOIN employee e
ON d.id = e.employeeid
GROUP BY d.department
ORDER BY d.department;
这是我尝试过的,但不起作用
SELECT d.department
FROM department AS d
HAVING COUNT(e.employeeid) > 1
(
SELECT COUNT(e.employeeid)
FROM employee AS e
WHERE d.id = e.employeeid
);
将相关子查询放入选择列表中
SELECT d.department,
(select COUNT(e.employeeid) from employee e where d.id = e.employeeid)
FROM department d
ORDER BY d.department
也许您需要执行选择DISTINCT
以避免重复行
编辑:连接条件似乎有点奇怪。它不应该是
d.id=e.departmentid
或类似的吗?在选择列表中放置一个相关的子查询
SELECT d.department,
(select COUNT(e.employeeid) from employee e where d.id = e.employeeid)
FROM department d
ORDER BY d.department
也许您需要执行选择DISTINCT
以避免重复行
编辑:连接条件似乎有点奇怪。应该是
d.id=e.departmentid
或类似的吗?谢谢,你的帖子帮了我很多忙。我终于让它工作了。我想join语句有点奇怪吧?我自己也不确定,但它很有效。谢谢,你的帖子帮了我很多忙。我终于让它工作了。我想join语句有点奇怪吧?我自己也不确定,但它确实有效。你到底想达到什么样的效果?子查询的效率通常低于等效联接。如果您只希望部门有多个员工,您可以使用第一个查询中第二个查询的HAVING?子查询的效率通常低于等效联接。如果您只希望部门有多个员工,那么可以使用第一个查询中第二个查询的HAVING。