我正在尝试获取名称数量以及与其关联的 ID 例如 姓名:乔恩·史密斯 碳数:2 编号:1
第二条 John Smith 记录将具有与其关联的不同 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 给出错误,指出无效的列名“name”。 我知道我只需使用一列来获取计数,然后对要放回的剩余列进行子查询即可获得所需的结果。但我需要它来获取名称
最佳答案
您不能在 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
关于mysql - 计算 SQL 中具有别名的列的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37265247/