[英]SQL UNION failed
这是我的查询:
select dept_name, count(*) as student_number
from Student s join Department d
on s.dept_id=d.dept_id
group by dept_name
order by student_number desc, dept_name asc
UNION
select d.dept_name, 0 as student_number
from Department d left join Student s
on s.dept_id=d.dept_id
where student_id is NULL
您的查询的问题是
ORDER BY<\/code>子句,这在第一个联合查询中是不允许的。
它应该放在联合的最终结果的最后。
但是,您不需要
UNION<\/code> 。
您可以使用
Department<\/code>到
Student<\/code>的
LEFT<\/code> join 来做到这一点:
SELECT d.dept_name, count(s.student_id) AS student_number
FROM Department d LEFT JOIN Student s
ON s.dept_id = d.dept_id
GROUP BY d.dept_name
ORDER BY student_number DESC, dept_name ASC;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.