在一个表的查询中同时选择和计数

时间:2013-10-21 20:49:36

标签: mysql sql oracle sqlplus

我正在尝试查询一个表并获得一列结果,然后该列的结果有多少。目前我必须分别运行两个查询,如下所示:

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,但是它列出了每个不同结果中有多少...给了我一堆1。如果有一种方法可以在我的脚本中没有执行循环来完成这些,那也可以工作)

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

你试过了吗?

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

按@Bohemian

的建议发布答案

答案 2 :(得分:0)

简单:

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