在没有组的子查询中计算唯一值
我想创建一个列来计算子查询中列的唯一字符串的出现次数。但是,我不想将结果分组。我需要我所有的原始行。我看到其他帖子,在这些帖子中,按以下方式选择了点票。我得到错误代码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
子查询需要按列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;
我不断收到错误,因为我无法从table_1中选择任何内容。它不是数据库中的现有表。它是在查询中创建的。这是最初的问题。 –
'table_1'是你实际表名的占位符。 – Fabricator
是的,我给出的例子使用占位符表和列名。我将这个概念应用于我的实际查询。我要计算的列来自在给定别名的子查询中创建的表。我不能调用这个别名表名,因为“SELECT FROM”函数在数据库中寻找一个表。我需要找到另一种计算所需列的方法,而不使用“FROM table_1”。 –
请张贴一些样本数据和预期结果。 –
编辑问题以显示预期结果 –