2013-07-01 3 views
-2

다음과 같은 표가 있습니다. 알 수 있듯이 이름 목록 만 있습니다. 일부는 다른 것과 이름이 같습니다. 내 목표는 각 이름의 합계를 같은 'firstname'으로 계산 한 다음 IF (total_of_firstname> = 1 & & total_of_firstname < = 20)과 같은 조건부를 수행하는 것입니다. 결과를 표시하십시오. MySQL만을 사용하여 어떻게 이것을 할 수 있습니까?Mysql WHERE 조건부

| id  | firstname  | lastname | 
|  1  | Bob   | Smith  | 
|  2  | Bob   | Marley  | 
|  3  | Stacey  | Clarke  | 
|  4  | Stacey  | Witson  | 
|  5  | Stacey  | Kowalowski | 
|  6  | George  | Benington | 
|  7  | George  | Robinson | 
+1

질문 ** 문제에 대한 최소한의 이해가 해결되는 것을 보여 주어야합니다. ** 당신이 무엇을 시도했는지, 왜 효과가 없었으며 어떻게 작동해야하는지에 대해 말해주십시오. 참고 : [Stack Overflow question checklist] (http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist) –

+0

위의 데이터 세트에 대한 예상 리서치를 여기에 게시 할 수 있습니까? – Salil

+0

나는 이걸 어떻게 달성 할 수 있는지 실마리가 없다. 그래서 나는 묻고있다. – user2310422

답변

1

먼저 데이터 :

CREATE TABLE `table` 
(id int(11) auto_increment, 
    firstname text, 
    lastname text, 
    primary key (`id`) 
); 


INSERT INTO `table` SET 
firstname = 'a', 
lastname = 'b'; 

INSERT INTO `table` SET 
firstname = 'a', 
lastname = 'c'; 

INSERT INTO `table` SET 
firstname = 'b', 
lastname = 'c'; 

INSERT INTO `table` SET 
firstname = 'c', 
lastname = 'c'; 

INSERT INTO `table` SET 
firstname = 'a', 
lastname = 'c'; 

그런 다음 SQL :

SELECT tablegrouped.firstname, tablegrouped.firstnamecount 
FROM (
SELECT firstname, count(*) as firstnamecount 
FROM table 
GROUP BY firstname) AS tablegrouped 
WHERE tablegrouped.firstnamecount >=1 AND tablegrouped.firstnamecount <=20