2010-10-14 24 views
8

làm thế nào tôi có thể tin tưởng bản sao hàng wihtin lựa chọn công bốđếm mysql bản sao

đây là bàn của tôi

name food 
A Apple 
B Banana 
A Banana 
C Apple 

quả nên như thế này:

name food count 
A apple (2) 
B Banana (1) 
A Bananaa (2) 
C Apple (1) 

Tôi cần một coloumn thứ ba trong kết quả đặt giá trị nào sẽ được tính (Tên)

Cảm ơn trước

Trả lời

23

Nó không rõ ràng chính xác những gì bạn muốn làm, vì vậy đây là hai khả năng.

Nếu bạn muốn xác định có bao nhiêu lần so với cùng namefood kết hợp xảy ra, bạn có thể sử dụng GROUP BY vào nhóm như hồ sơ và COUNT để xác định có bao nhiêu trong nhóm:

SELECT name, food, COUNT(*) AS count 
FROM your_table_name 
GROUP BY name, food 

Cách khác, nếu bạn chỉ muốn truy xuất bao nhiêu lần tên trùng lặp, bạn sẽ cần truy vấn con:

SELECT name, food, 
    (
    SELECT COUNT(*) 
    FROM your_table_name 
    WHERE name = table_alias.name 
) AS count 
FROM your_table_name AS table_alias 

Truy vấn đầu tiên sẽ chỉ trả về một hàng cho mỗi name/food nhóm, cùng với số lượng bản ghi xuất hiện trong nhóm. Truy vấn thứ hai sẽ trả về tất cả các hàng, với số lượng hàng có cùng tên trong mỗi hàng.

+0

Tôi có đậu chờ đợi thời gian của tôi ngày hôm qua đếm dữ liệu theo cách thủ công, khi có một số điều như thế này. Cảm ơn rất nhiều. – newbie

22
SELECT name, food, COUNT(food) AS cnt 
FROM table 
GROUP BY name, food 
HAVING (cnt > 1) 

Nếu bạn muốn đếm tất cả mọi thứ, không chỉ các bộ dữ liệu trùng lặp, sau đó loại bỏ dòng HAVING, vì nó sẽ lọc ra mọi thứ không trùng lặp.

Các vấn đề liên quan