2013-10-21 48 views
1

我想查询一个表并获得一列结果,然后该列有多少结果。目前,我必须单独运行两个查询,像这样:在一个表的查询中同时选择和计数

SELECT DISTINCT field_a 
FROM table_a 
WHERE property_a = 1 
AND property_b = 2; 

SELECT COUNT(DISTINCT field_a) 
FROM table_a 
WHERE property_a = 1 
AND property_b = 2; 

我宁愿结合这些,因为他们正在执行相同的查询,但我无法弄清楚如何。像

SELECT COUNT(DISTINCT field_a) AS my_count, DISTINCT field_a AS my_records 
FROM table_a... 

东西(我试过GROUP BY,但列出了每个不同的结果,许多有..给了我一串1S的。如果是那些总起来而不进行一个循环的方式我的脚本,也可以工作)

+1

你试过: '选择field_a,COUNT(*) 从表-A WHERE property_a = 1 AND property_b = 2; group by field_a' ? – CronosNull

+0

它是mysql还是oracle db?它是存储过程还是你从任何编程语言发送查询? –

+0

您不能确定第一个查询返回的记录数的计数吗? – eggyal

回答

0

您可以加入全球重复计数每个不同的结果:

SELECT DISTINCT(field_a) as my_records, b.my_count 
FROM table_a, 
    (
     SELECT COUNT(DISTINCT field_a) as my_count FROM table_a 
     WHERE property_a = 1 AND property_b = 2 
    ) b 
WHERE property_a = 1 AND property_b = 2; 
0

你试过:

select field_a, count(*) 
from table_a 
WHERE property_a = 1 AND property_b = 2 
group by field_a 

张贴作为一个答案,如@Bohemian

0

简单的建议:

SELECT DISTINCT 
     field_a 
     ,COUNT(DISTINCT field_a) OVER() 
FROM table_a 
WHERE property_a = 1 
AND property_b = 2; 
相关问题