在没有组

时间:2017-09-26 15:07:47

标签: mysql

我想创建一个列,用于计算子查询中列的唯一字符串的出现次数。但是,我不想将结果分组。我需要所有原始行。我看到其他帖子以下列方式选择了计数。我得到错误代码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

1 个答案:

答案 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;