Q
子查询问题
0
A
回答
1
如果您正在使用SQL Server
版本或以上,这里是另一个可能的方式让员工按部门计数。 。
SELECT DPT.DepName
, EMP.EmpCount
FROM dbo.Department DPT
CROSS APPLY (
SELECT COUNT(EMP.DepartId) AS EmpCount
FROM dbo.Employees EMP
WHERE EMP.DepartId = DPT.DepartId
) EMP
ORDER BY DPT.DepName
希望有所帮助。
样品测试查询输出:
1
我会使用outer join
而不是子查询。
SELECT d.DepName, COUNT(e.Name)
FROM Department d
LEFT JOIN Employees e ON e.DepartID = d.DepartID
GROUP BY d.DepartID, d.DepName
1
SELECT d.DepName, COUNT(e.Name)
FROM Department d
LEFT JOIN Employees e
ON d.DepartID = e.DepartID
GROUP BY d.DepName
+0
这假设部门名称是唯一的。 'DepartID'似乎是一个更好的事情'分组' – 2011-05-25 16:31:03
1
无需子查询。
SELECT dep.DepName, COUNT(emp.Name)
FROM DepName dep
LEFT OUTER JOIN Employees emp ON dep.DepartID = emp.DepartID
GROUP BY dep.DepName
+0
这假设部门名称是唯一的。 ''bypartid'似乎是一件更好的事情 – 2011-05-25 16:32:18
1
SELECT COUNT(DISTINCT Name) FROM
Department AS d, Employees AS e
WHERE d.DepartID=e.DepartID AND d.DepName = '$thename'
1
,并避免使用group by
,节省您的queryplan排序操作:
SELECT
Department.DepName,
(SELECT COUNT(*)
FROM Employees
WHERE Employees.DepartID = Department.DepartID)
FROM
Department
相关问题
- 1. 子查询问题
- 2. 子查询问题
- 3. 子查询问题
- 4. 子查询问题
- 5. MYSQL查询问题和子查询
- 6. MySQL查询/子查询问题
- 7. SQL查询简单问题子查询
- 8. SQL Server查询/子查询的问题
- 9. MySQL子查询/查询问题
- 10. MySQL查询分组子查询问题
- 11. Sql子查询问题
- 12. SQL查询子问题
- 13. Sqlite子查询的问题
- 14. SQL子查询问题
- 15. MYSQL - 问题与子查询
- 16. 问题与子查询
- 17. SQL子查询问题
- 18. T-SQL子查询问题
- 19. 问题:MySQL的子查询
- 20. 问题与子查询
- 21. 问题与子查询
- 22. C#LInq子查询问题
- 23. SQL子查询问题
- 24. mysql子查询问题
- 25. MySQL的子查询问题
- 26. Mysql的子查询问题
- 27. SQL子查询问题
- 28. 问题与MySQL子查询
- 29. Sql子查询问题
- 30. 子查询保理问题
子查询较好,避免了排序上DepName – Magnus 2011-05-25 18:11:37
@Magnus机会是'DepartID'将是PK /聚簇索引键,也不会需要任何形式。编辑:这是一个警察的答案,虽然有趣的一般点我会做一些测试。 – 2011-05-25 18:17:55
我想,既然你是由DepartID和DepName分组而不是只有DepName – Magnus 2011-05-25 18:26:52