手头的任务是选择音乐家(pid)和每个乐器的数量,包括乐器只能在音乐会上演奏 - 这些乐器可能不在[播放]表格中。Psql - from子句中的子查询 - 不好的做法?
我已经解决了它,但我读过子句中的子查询应尽可能避免。出于好奇,任何人都可以给我一个更有效的方法吗?或者这是一个很好的解决方案?我正在使用psql。
select a.pid, sum(a.instr)
from
(
select pid, count(instr) as instr from plays group by pid
union all
select pid, count(instr) as instr from concert group by pid
) as a
group by a.pid;
更具体地说,查询规划器可以并且通常会扁平化子查询,将条件从子查询拉到外部查询,将条件从外部查询推入子查询等等。子查询大多只是符号化,并且不会与查询真正按照您的预期执行的方式一样多。至少在PostgreSQL中。 –