如何计算以特定字母开头但仍包含带有“0”的字母的类别

How do I count categories beginning with specific letters, but still include letters with '0'

我的查询给出了以每个字母开头的类别数

SELECT SUBSTRING(headings.heading,1,1) AS first_letter, COUNT(*) AS cat_count
FROM TABLE a
        INNER JOIN headings
        ON a.Heading=headings.heading 
  GROUP BY first_letter

给我:

A - 5
B - 4
C - 4
D - 2
F - 10
G - 9

依此类推直到Z

但我还希望结果包含计数为 0 的字母。 eg. E - 0 我猜 SQL 这可能会很棘手,因为我正在尝试获取不存在的东西。我必须在 PHP 中执行此操作吗?如果是这样,我有什么想法可以做到这一点吗?

如果您的 table 只有一个字段包含所有可能的结果(在您的情况下是 a-z),那么从 table 到您的数据的左外连接..

例如首字母 table:

Letter
------
A
B
C
..
Y
Z

那么您的查询将变成:

SELECT letter as first_letter, COUNT(a.heading) AS cat_count
FROM 
    FirstLetters l
    left outer join
    TABLE a
    ON left(a.Heading,1)=l.letter 
GROUP BY letter

抱歉,如果这不是 100% 正确的语法.. 最近没有使用 mysql

这可能对你有用:

WITH Departments AS (
SELECT SUBSTRING(D.Name,1,1) AS First_Letter, COUNT(*) AS name_count
FROM HumanResources.Department D
Group BY SUBSTRING(D.Name,1,1))

SELECT Letter, ISNULL(D.name_count,0)
FROM Letters L
LEFT JOIN Departments D ON L.Letter = D.First_letter

基本上,我正在创建一个 CTE,其中包含使用您的子字符串语句的字母计数,并将其与我的字母 table 进行比较。如果在部门 table 中找不到该字母,它将 return 0。希望这有帮助!对于字母 table,我刚刚创建了一个简单的 table,其中包含一列并将字母表中的每个字母作为值。