我有一个USER_ROLES
在 Oracle 10g 中命名的表,如下所示。
USER_ROLE_ID USER_ID AUTHORITY
28 2 ROLE_ADMIN
45 3 ROLE_USER
61 3 ROLE_ASSISTANT
27 3 ROLE_SUPERVISOR
USER_ID
表的外键在哪里USER_TABLE
。我需要从与特定用户()关联的一组行中知道特定行的行号USER_ID
(而不是基于此表中的所有行)。
以下 SQLUSER_ROLE_ID
基于此表中的所有行检索给定的行号(在本例中为 28)。
select row_num from
(select row_number() over (order by user_role_id desc) as row_num, user_role_id
from user_roles order by user_role_id desc)
where user_role_id=28
在这种情况下,它显示 3。
但我需要从仅与特定用户关联的一组行中检索行号。为此,如果我尝试以下 SQL,
select row_num from
(select row_number() over (order by user_role_id desc) as row_num, user_role_id
from user_roles order by user_role_id desc)
where user_id=2 and user_role_id=28
在这种情况下,我修改了WHERE
从
where user_role_id=28
至
where user_id=2 and user_role_id=28
它给出了以下错误。
ORA-00904: "USER_ID": invalid identifier
那么,在这种情况下,仅从与特定用户关联的那些行中获取行号的方法是什么?