[英]Count occurrences of a column with alias in SQL
我正在尝试获取名称及其相关ID的计数,例如Name:Jon Smith cnt:2 ID:1
第二条约翰史密斯记录将具有与之关联的其他ID。
我查看了其他建议的解决方案,并且到目前为止:
select a.id, concat(a.firstname,' ',a.lastname) as name, b.cnt
from table a
join (select concat(firstname,' ',lastname) as bname, count(*) as cnt
from table by firstname,lastname) b
on a.name=b.bname
但是,SQL给出错误,指出无效的列名“名称”。 我知道我可以只使用一列就可以得到所需的结果,然后对剩余的列进行子查询。但是我需要它来命名
您不能在JOIN
条件中使用别名。 您可以先将其放在子查询中,也可以使用连接的列,如下所示:
SELECT
a.id,
CONCAT(a.firstname, ' ', a.lastname) AS name,
b.cnt
FROM table a
JOIN (
SELECT
CONCAT(firstname, ' ', lastname) AS bname,
COUNT(*) AS cnt
FROM table b
GROUP BY firstname, lastname
) b
ON CONCAT(a.firstname, ' ', a.lastname) = b.bname
您可以完全避免加入,这有点麻烦:
Select
a.id
,concat(a.firstname,' ',a.lastname) as name
, (select
count(*)
from table b
where a.firstname = n.firstname
and a.lastname = b.lastname)
from table a
计数不是标量,因此应正常工作。 或仅使用您拥有的内容,然后按上述方式将联接设为名字和姓氏(而不是串联)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.