2012-07-30 55 views
0

需要执行查询,以找到与第三列的值计数> 1。实施例rowns:MYSQL选择其中计数> 1

表:

 col1 col2 col3 
------------------------ 
1. val1 val2 val3 
2. val11 val21 val3 
3. val12 val22 val31 
4. val13 val23 val32 
5. val14 val24 val32 

结果将被行1,2,4,5因为我们值与计数COL3> 1

+0

您的查询在哪里? – diEcho 2012-07-30 13:08:42

回答

6

你提的问题是非常不清楚,这可能是你问:

SELECT COUNT(col3) as countCol3 
FROM table 
GROUP BY col3 
HAVING countCol3 > 1 
+1

为什么downvote? – Tchoupi 2012-07-30 13:14:31

+1

不是倒向选民,但OP似乎是要求行,而不是(只)计数。虽然这个查询是获得OP的答案的提示,但它并没有提供完整的答案(至少我如何解释这个问题,而且我可能是错的^^) – jswolf19 2012-07-30 13:36:01

+0

@ jswolf19我明白了你的观点。然而,正如你所想象的,我不愿意给一个没有提出详尽问题的人提供完整详细的答案。该问题没有提供任何主键,也没有提供任何可用于以体面方式检索整行的内容。 – Tchoupi 2012-07-30 13:40:40

0

这是一个可以帮助你的答案。我已经包含了一些示例数据以帮助其他人找到一些示例数据有用的信息:

drop table if exists valTable; 

create table valTable 
(
id int unsigned primary key auto_increment not null, 
col1 varchar(50), 
col2 varchar(50), 
col3 varchar(50) 
); 

insert into valTable (col1,col2,col3) values ('val1','val2','val3'); 
insert into valTable (col1,col2,col3) values ('val11','val21','val3'); 
insert into valTable (col1,col2,col3) values ('val12','val22','val31'); 
insert into valTable (col1,col2,col3) values ('val13','val23','val32'); 
insert into valTable (col1,col2,col3) values ('val14','val24','val32'); 

select vt.* 
from valTable vt 
where vt.col3 in 
(select col3Multi from (
select col3 col3Multi,count(*) as c 
from valTable 
group by col3 
having c > 1) t);