[英]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
我有兩個問題:
謝謝你。
你應該使用 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.