mysql - 如何计算列值出现的次数但没有GROUP BY(不是不同的值)mysql

标签 mysql sql count

id      title           numbers
1       chicken         1
2       meat            1
3       fish            1
4       fish            2
5       meat            2
6       fish            3
7       chicken         2
8       chicken         3

I want to construct the following output as above. Anyone can help me calculate number of occurrence of column values but without GROUP BY(not remove same values) , let create "numbers" field same as above , thank

Normal , if use COUNT(*) :

SELECT COUNT(*) FROM table GROUP BY title

但它删除了相同的值:

id      title           numbers
1       chicken         3
2       meat            2
3       fish            3

我想保持相同的值,并像这样输出:

id      title           numbers
1       chicken         1    
2       meat            1
3       fish            1
4       fish            2
5       meat            2
6       fish            3    
7       chicken         2     
8       chicken         3     

最佳答案

我假设您的问题是如何在示例输出中生成 numbers 列。如果这不正确,请澄清问题。

select  id
,       title
,       (
        select  count(*)
        from    Table1 t2
        where   t1.title = t2.title
                and t2.id <= t1.id
        ) as numbers
from    Table1 t1

Live example at SQL Fiddle.

关于mysql - 如何计算列值出现的次数但没有GROUP BY(不是不同的值)mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14357688/

相关文章:

sql - 如何在多个不同的列上应用 Count 并使用 Hading 子句

php excel阅读器读取数字不正确

mysql - SQL 连接具有重复条目的多个表和 count() group by

php - Yii2 中的关系和主动查询?

mysql - 如何按列值的计数计算百分比

php - PHP 和 MySQL 中唯一访问次数的有效计数器

php - 获取恰好还有 3 天到期的记录

php - 错误是查询连接和日期/时间间隔

sql - 在SQL中使用GROUP BY-仅用于聚合吗?

包含零值的 SQL 计数