2017-09-26 75 views
0

我想创建一个列来计算子查询中列的唯一字符串的出现次数。但是,我不想将结果分组。我需要我所有的原始行。我看到其他帖子,在这些帖子中,按以下方式选择了点票。我得到错误代码1146,因为我的数据库中不存在table_1,但来自子查询。有谁知道另一种方式来做到这一点?期望的输出的在没有组的子查询中计算唯一值

SELECT table_1.columnA 
    ,table_1.columnB 
    ,table_2.CountB 
    , 
FROM (
    SELECT sometable.stuff AS 'columnA' 
     ,sometable.morestuff AS 'columnB' 
    FROM sometable 
    WHERE blah_blah_blah = blah 
    ) table_1 
    ,(
     SELECT columnB 
      ,count(columnB) AS 'CountB' 
     FROM table_1 
     ) table_2 
WHERE table_1.columnB = table_2.columnB 

实施例:
columnA columnB CountB
1红3
2绿色2
3蓝1
4绿色2
5红3
6红3

+2

请张贴一些样本数据和预期结果。 –

+0

编辑问题以显示预期结果 –

回答

0

子查询需要按列B计算并回到原始表中:

select a.*, b.c 
from table_1 a 
join (
    select columnB, count(*) c 
    from table_1 
    group by columnB) b on a.columnB = b.columnB; 
+0

我不断收到错误,因为我无法从table_1中选择任何内容。它不是数据库中的现有表。它是在查询中创建的。这是最初的问题。 –

+0

'table_1'是你实际表名的占位符。 – Fabricator

+0

是的,我给出的例子使用占位符表和列名。我将这个概念应用于我的实际查询。我要计算的列来自在给定别名的子查询中创建的表。我不能调用这个别名表名,因为“SELECT FROM”函数在数据库中寻找一个表。我需要找到另一种计算所需列的方法,而不使用“FROM table_1”。 –