2013-08-16 5 views
1

검색어에서 사용자의 위치를 ​​찾는 방법은 무엇입니까? 배열을 정렬한다 내가검색어에서 사용자의 위치를 ​​찾는 방법은 무엇입니까?

session.query(UserModel).order_by(desc(UserModel.age)).all() 

(내가 MySQL을 사용하고)하고 난 사용자 ID를 가지고 어떻게 특정 ID의 위치를 ​​찾는 방법은? (모두 반환하고 반복 할 수 있지만 데이터베이스 수준에서이를 해결하기위한 더 위풍 당당한 방법입니다. 빨리 실행해야합니다.)

답변

2

데이터베이스는 window functions을 지원해야합니다. 원시 SQL 쿼리는 다음과 같이 표시됩니다

SELECT pos FROM 
    (SELECT id, row_number() OVER (ORDER BY age DESC) AS pos FROM user) AS sub 
    WHERE sub.id = :id; 

SQLAlchemy의에서 : 인덱스를 반환

from sqlalchemy import func, desc 

user_id = 42 
sub = (session 
    .query(
     UserModel.id, 
     func.row_number().over(order_by=desc(UserModel.age)).label('pos')) 
    .subquery()) 
pos = session.query(sub.c.pos).filter(sub.c.id==user_id).scalar() 

주 1 기반이다.

인기있는 RDBMS 중에서 이것은 PostgreSQL, Oracle, MSSQL에서 작동하지만 MySQL 또는 SQLite에서는 작동하지 않습니다.

+0

MySQL 또는 SQLite 데이터베이스는 어떻습니까? 그들에 대한 해결책이 있습니까? –

관련 문제