如何在select查询mysql中获取行号

时间:2016-03-22 14:40:20

标签: mysql

我试着在174行的表中找到所有年份。 2016年和2017年有两个不同的年份。并添加到查询的响应和ID,它们对应于"行数"回应。

以下是查询:

SET @n=0;
SELECT YEAR (`Date`) AS Libelle, @n := @n + 1 AS id FROM Datas GROUP by Libelle

回复是:

|Libelle| Id|
|   2016|  1|
|   2017|174|   

获得的方式是什么:

|Libelle| Id|
|   2016|  1|
|   2017|  2| 

174对应于我表格​​中的最后一条记录。而且我知道@n的所有其他行都会增加。

你有想法这样做吗?

2 个答案:

答案 0 :(得分:1)

试试这个。所以计数器只对结果起作用:

SELECT  @n := @n + 1 AS id , tmp.*
FROM (
  SELECT DISTINCT YEAR (`Date`) AS Libelle FROM Datas GROUP by Libelle ) AS tmp,
  ( SELECT  @n := 0) as parameter;

答案 1 :(得分:0)

或许这样的事情?

SELECT
    t1.Libelle,
    @n := @n + 1 AS id
FROM (
    SELECT DISTINCT YEAR(`Date`) AS Libelle
    FROM Datas
    GROUP BY Libelle
) t1,
(
    SELECT @n := 0
) t2;

相关:https://stackoverflow.com/a/4474389/4152813