[英]How to get values in one column where another column equals a value with SQL, and store into an array in PHP?
[英]SQL Count most used value in one column where other column equals something.
这有点奇怪,我不知道该如何写标题,请多多包涵。
因此,我有一个像这样的表,用于存储有关不同作业的数据:
id | company | contact
----------------------
0 | name1 | Bob
1 | name1 | Mark
2 | name3 | Sam
3 | name1 | Bob
4 | name2 | Nigel
5 | name1 | Bob
6 | name3 | Donald
7 | name1 | Sandy
8 | name3 | Nigel
是否有SQL查询,我可以使用该查询表查询特定公司的最常用联系人。
因此,我要寻找的理论代码将类似于:
SELECT "Most Commonly used Contact" FROM table WHERE company = "$company";
是否可以在单个查询中进行,还是这是一个多查询工作?
试试这个SQL查询...
SELECT *, COUNT(*) AS total
FROM table
WHERE company = '$company'
GROUP BY contact
ORDER BY total DESC
LIMIT 1
基本上,您想查找每个公司分组的联系人数量,然后再按实际联系人分组。 换句话说:
SELECT COUNT(`id`) as num_contacts, `contact`, `company` FROM `jobtable` GROUP BY `company`, `contact` ORDER BY `company`, num_contacts DESC
或对于单个公司:
SELECT COUNT(`id`) as num_contacts, `contact` FROM `jobtable` WHERE `company`='$company' GROUP BY `contact` ORDER BY num_contacts DESC
如果您不能使用LIMIT(例如,如果您正在使用Oracle数据库),则为您提供$ company的最常用联系人:
SELECT contact, used_by
FROM (
SELECT contact, COUNT(*) AS used_by
FROM table
WHERE company = $company
GROUP BY contact
) t
HAVING used_by = MAX(used_by)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.