mysql - 计算 SQL 中具有别名的列的出现次数

标签 mysql sql sql-server sql-server-2008 sql-server-2012

我正在尝试获取名称数量以及与其关联的 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/

相关文章:

sql - 使用 SUM 和 Group BY 的 T-SQL 更新

sql-server - 使用 T-SQL 在 Linux 上获取 sql server 默认备份文件夹

php - MYSQL n个元素矩阵

SQL Server - 在更新语句中加入或子查询?

sql - 使用 CTE 拆分表中的行

mysql - 在 MySQL Workbench 中查看日语字符

php - 有没有一种保存和显示网页文档编辑的好方法

MYSQL JSON select查询每次运行返回不同的结果

mysql - 基于 ORDER 字段而不是首次出现的累积字段

sql - 为什么 `NOT(NULL=NULL)` 是假的?