【问题标题】:Finding the right count syntax in mySQL select statement在 mySQL 选择语句中找到正确的计数语法
【发布时间】:2017-01-04 10:20:50
【问题描述】:

目标: 有一个 SIC 代码表及其描述(通过另一个表连接)并计算使用的每个 DISTINCT SIC 代码的实例数。下面是理想的结果......紧随其后的是当前的 mySQL 选择语句:

SIC Code | Description | Count of SIC Code
0001     | Desc A      | 10               
0002     | Desc B      | 50               
000N     | Desc N      | 80

当前 SQL 语句,但导致错误提示:

$sql = "SELECT DISTINCT company_list.SIC_Codes, sic_codes.SIC_desc, COUNT(*) as sicCount, FROM company_list LEFT JOIN sic_codes ON company_list.SIC_Codes = sic_codes.SIC_code;";

关于使用哪种计数语法来获取上述示例的任何想法或观点?

谢谢。

【问题讨论】:

  • 我认为即使没有任何错误,您仍然无法达到您想要的结果,因为如果您将 COUNT 放入 select 查询中,它将始终只返回 1 个结果而不是全部。
  • @BCH 关于表结构的任何线索..?无论如何,之前的评论是正确的,您必须先将DescriptionSIC Code 分组才能使COUNT() 起作用..
  • 为你解决错误问题。我认为您应该删除sic_codes.SIC_code 旁边的;

标签: php mysql count left-join


【解决方案1】:

尝试为COUNT 进行子查询,类似这样。

$sql = "SELECT DISTINCT company_list.SIC_Codes, sic_codes.SIC_desc, (SELECT COUNT(*) FROM company_list LEFT JOIN sic_codes ON company_list.SIC_Codes = sic_codes.SIC_code) as sicCount, FROM company_list LEFT JOIN sic_codes ON company_list.SIC_Codes = sic_codes.SIC_code";

不要将COUNT 作为字段,而是尝试为它创建一个子查询。
COUNT(*) 更改为(SELECT COUNT(*) FROM company_list LEFT JOIN sic_codes ON company_list.SIC_Codes = sic_codes.SIC_code)

【讨论】:

  • 马克 - 感谢您的想法...我使用了一段时间,然后返回并相信我找到了解决方案...$sql = "SELECT company_list.SIC_codes, sic_codes.SIC_desc , COUNT(1) as sicCount FROM company_list LEFT JOIN sic_codes ON company_list.SIC_codes = sic_codes.SIC_code GROUP BY company_list.SIC_codes ORDER BY sicCount DESC";这似乎给了我表 1 中的每个“SIC 代码”及其在表 2 中的描述以及它们的计数。对这种方法有任何顾虑吗?谢谢。
猜你喜欢
  • 1970-01-01
  • 2023-03-17
  • 2011-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-27
  • 1970-01-01
相关资源
最近更新 更多