我有这样的查询:
select foo.*, count(bar.id)
from foo inner join bar on foo.id = bar.foo_id
group by foo.id
Run Code Online (Sandbox Code Playgroud)
这适用于SQLite和MySQL.然而,Postgres抱怨我不包括group by条款中的所有foo列.为什么是这样?foo.id是独一无二的还不够吗?
如果DBMS没有ANY()聚合函数,我通常使用MAX()或MIN().
在mySQL和MS-SQL中有没有更便宜的东西?
我在problem_categories表中有9个项目,其category_id = 1
当我这样做时:
select problems.problem_id , problem_title , sum( vote ) as totalVotes
from problems
left join problem_votes on problems.problem_id = problem_votes.problem_id
left join problem_categories on problems.problem_id = problem_categories.problem_id
where problem_categories.category_id = 1;
Run Code Online (Sandbox Code Playgroud)
我获得了1行,其中9个项目的所有选票都是完整的.但我真正想要的是9行,每行有一票.通过查看我的查询有什么问题吗?
我的桌子是
problem - lists problem information
problem_votes - has a record per vote for each problem
problem_categories - table keeping a problem_id and a category_id so that a problem can be in a certain category
Run Code Online (Sandbox Code Playgroud)
谢谢,亚历克斯