我正在尝试在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查询会更合适吗?
答案 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