MySQL'Group By'会弄乱虚拟列数

时间:2015-04-05 05:01:04

标签: php mysql sql

我正在尝试在SQL表中选择不同的行,但是我没有运气使用下面的代码正确标记返回的行:

    SELECT  @row:=@row+1 as rank,
            a.id,
            a.name
    FROM table a, 
    ( SELECT  @row:=0) b
    GROUP BY  a.id
    ORDER BY  a.name ASC

此查询将返回以下内容:

| RANK |   ID    |   NAME
--------------------------
   2   |  4483   |  Bob 
   8   |  9453   |  Joe
   10  |  4543   |  Maurice

我希望它返回的是这个,但是:

| RANK |   ID    |   NAME
--------------------------
   1   |  4483   |  Bob 
   2   |  9453   |  Joe
   3   |  4543   |  Maurice

对我来说,对这种规模的查询使用DISTINCT查询会更合适吗?

1 个答案:

答案 0 :(得分:0)

根据Marc B的解决方案,我决定用另一个解决我的查询,但是我决定选择 DISTINCT 列,而不是通过使用此代码将它们分组,这将删除我的误差范围< / p>

SELECT @row:=@row+1 as rank, a.id, a.name FROM
(
SELECT DISTINCT id, name 
FROM Table1
) a, (SELECT @row:=0) b


ORDER BY a.name ASC