我想知道查询中返回的记录的序号(?)位置。
互联网上的一般答案是:
SET @row=0;
SELECT (@row:=@row+1) AS row, ename, empno FROM emp ORDER BY empno;
+-----+--------+-------+
| row | ename | empno |
+-----+--------+-------+
| 1 | SMITH | 7369 |
| 2 | ALLEN | 7499 |
| 3 | WARD | 7521 |
| 4 | JONES | 7566 |
| 5 | MARTIN | 7654 |
| 6 | BLAKE | 7698 |
| 7 | CLARK | 7782 |
| 8 | SCOTT | 7788 |
| 9 | KING | 7839 |
| 10 | TURNER | 7844 |
| 11 | ADAMS | 7876 |
| 12 | JAMES | 7900 |
| 13 | FORD | 7902 |
| 14 | MILLER | 7934 |
+-----+--------+-------+
但它对我来说根本不起作用。使用ORDER BY正确排序列表,但行列是随机顺序,而不是顺序。
希望有人能够知道答案,而不是告诉我为什么不应该这样做(有很多技术原因,为什么太多,无法进入!)
答案 0 :(得分:1)
解决了自己:|
创建一个列出所有记录的子查询,然后选择所有这些记录的查询,以及(row = row + 1)位,然后选择所有这些记录的另一个查询,并使用WHERE子句查找记录。
所以你有3个嵌套查询。最低的一个选择全部,中间一个添加行信息,顶部一个添加WHERE子句。