簡體   English   中英

MySQL 計數匹配不同列值的記錄

[英]MySQL count records matching distinct column values

我的數據庫包括一個人名列。 不幸的是,該列包含人名的細微變化。 我想要一個查詢,它返回一個不同的名稱列表和每個變體的記錄數。

這是該列的外觀:

+---------------+
| Customer      |
+---------------+
| Stan c. Smith |
| Stan c Smith  |
| Stan c. Smith |
| Stan c Smith  |
| Stan c, Smith |
| Stan c Smith  |
+---------------+

我想要這個結果:

Stan c. Smith 2
Stan c Smith  3
Stan c, Smith 1

這是我的查詢:

SELECT 
    DISTINCT(`Customer`) as aCustomer, COUNT(`Customer`)
FROM
    `customerTable`
where 
    `Customer` like "%Stan%c%Smith%"

但它只返回:

Stan c Smith  6

我有兩個問題:

  1. 為什么 MySQL 只列出一個結果?
  2. 我需要做什么才能得到我想要的結果?

謝謝你。

你應該使用 group by,下面的查詢應該給你結果

SELECT 
     `Customer` as aCustomer, COUNT(`Customer`) as count
FROM
      `customerTable`
where 
    `Customer` like "%Stan%c%Smith%"
group by aCustomer

回答您的問題:

1) Count 是一個聚合函數,它返回總行數,默認情況下這將返回 1 個值,除非您使用GROUP BY

2) 使用GROUP BY Customer這會將所有具有相同名稱的客戶分組在一起,然后運行計數應該導致每個唯一實例的計數:

SELECT 
    `Customer`, COUNT(`Customer`)
FROM
    `customerTable`
WHERE
    `Customer` like "%Stan%c%Smith%"
GROUP BY `Customer`

有關演示,請參閱SQLFiddle

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM