繁体   English   中英

这个mysql查询有什么问题

[英]What's wrong with this mysql query

SELECT v.*, COUNT(a.*) 
FROM vacancies AS v, applications AS a 
WHERE a.vacancy_id = v.id

基本上我需要一种计算与每个空缺相对应的应用程序数量的方法。

申请有空缺ID。 因此,我想从vacancies表中获取空位,并通过它们进行迭代,以输出具有相同vacancy_id的应用程序数量。

这是正确的方法吗? 它说我的COUNT(a.*)位有问题。

有任何想法吗?

谢谢。

编辑

好的,所以我按组尝试了一下,现在有了这个:

SELECT v.*, COUNT(a.candidate_id)
FROM vacancies AS v, applications AS a 
WHERE a.vacancy_id=v.id 
GROUP BY v.title

但是它只返回一个结果,因为只有一个应用程序。 即使没有与空缺关联的应用程序,是否有任何方法可以从空缺表中返回所有内容?

您需要GROUP BY子句。 添加类似的东西

   GROUP BY vacancy.somefield

到查询。 请参阅MySQL中的COUNT函数引用

选择空缺表的所有成员,而不是编写

   WHERE a.vacancy_id = v.id

你应该使用LEFT JOIN子句:

   LEFT JOIN applications ON a.vacancy_id = v.id

参见MySQL JOIN文档

COUNT是一个分组操作。 您最后需要使用GROUP BY。

编辑使用左连接

SELECT v。*,COUNT(a.candidate_id)FROM vacancies AS v LEFT JOIN应用程序AS a a.vacancy_id = v.id GROUP BY v.title

如果要混合汇总和名称,则需要分组

SELECT 
    v.id, COUNT(*)
FROM 
    vacancies AS v, 
    applications AS a 
WHERE 
    a.vacancy_id=v.id
GROUP BY 
    v.id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM