从 mysql table 子查询中计算行号

Count row number from a mysql table subquery

我有一个 table department_courses 结构如下:

id   department_id   name  
--   -------------  -----
1    11             Abcd
2    11             Bghg
3    11             Lopps
4    13             Abvgf

所以从这个table我需要统计子查询的位置。我的意思是说,name Lopps for department_id 的位置是 3 。如何在 mysql 查询中得到这个?

尝试:

select row_num
from (
    select t.*, @r := @r + 1 row_num
    from department_courses t,
    (select @r := 0) r
) x
where x.name = 'Lopps'
x.department_id = 3

如果您只需要对一行执行此操作,那么单个查询会更简单:

select count(*)
from department_courses dc
where dc.id <= (select dc2.id
                from department_courses dc2
                where dc2.name = 'Lopps'
               );

如果您想为所有行分配一个行号,那么变量可能是更好的方法。