如何在MySQL查询中生成序号

如何在MySQL查询中生成序号,mysql,Mysql,我在MySQL中的数据类似于: NO Item ----------------------- 1 A 1 B 1 C 2 A 3 C 但我想生成序列号,比如: SrNo NO Item ----------------------- 1 1 A 2 1 B 3 1 C 1 2 A 1 3 C 要完全按照您的要求获得结果,以下是

我在MySQL中的数据类似于:

NO    Item
-----------------------
 1     A
 1     B
 1     C
 2     A
 3     C
但我想生成序列号,比如:

SrNo   NO    Item
-----------------------
 1      1     A
 2      1     B
 3      1     C
 1      2     A
 1      3     C

要完全按照您的要求获得结果,以下是一个查询:

SET @prev_value = NULL;
SET @rank_count = 0;
SELECT CASE
    WHEN @prev_value = `NO` THEN @rank_count := @rank_count + 1 
    WHEN @prev_value := `NO` THEN @rank_count := 1 END AS `SrNo`, `NO`, `item`
FROM `Table1`
ORDER BY `NO`, `item`

是sqlfiddle,因此您可以自己测试。

您的意思是您的序列号与字段项的值相关吗?如果是这样的话,就计算一个散列值。是的……你能告诉我查询结果吗?你为什么不使用1A、1B、2A、3C等等……它不依赖于项……请仔细阅读它依赖于否。非常好……适用于五到七个值,但每行只能得到一个……请帮助。。