MySQL行号

时间:2010-08-26 14:50:03

标签: mysql sql-order-by

假设我有一个MySQL查询,例如:

SELECT id, name, surname FROM employees ORDER BY id

结果应该是:

id    name    surname
 1     Peter   Smith
 2     John    Banjo
...
 1384  Will    Levenstein

虽然这是一个有序的查询,但我总是可以假设(只要我不更改表格)John Banjo将会出现在第二位。

现在如果我的查询是

怎么办?
SELECT id, name, surname FROM employees WHERE name = 'John' AND surname = 'Banjo'

我可以以某种方式得到第一个查询中的行号吗? 我试图在一个更复杂但总是有序的查询中做到这一点,有什么方法可以实现这个目标吗?

1 个答案:

答案 0 :(得分:2)

 SELECT x.id, x.name, x.surname, x.rownum
 FROM (
      SELECT @rownum:=@rownum+1 rownum, t.*
      FROM (SELECT @rownum:=0) r, employees t
      ORDER BY Id
 ) x
 WHERE x.name = 'John' 
 AND x.surname = 'Banjo'