문제

나를 찾아야 할 인덱스의 위치 레코드에 데이터베이스 테이블 위해서는 미리 호출기는 그 항목 페이지로 이동합니다.필요 효율적인 SQL 쿼리를 줄 수 있는 나에게 이 수 있습니다.슬프게도 SQL 을 제공하지 않 같은 것:

SELECT INDEX(*) FROM users WHERE userid='123'

는 밝은 아이디어?

편집:가정 할 수 있습이 주문 절에 추가됩니다.점은 내가 원하지 않을 로드하는 모든 레코드의 위치를 찾는 특정 하나입니다.나을 열려고 시도하기 위해 페이지를 들고 기존 항목은 이전에 선택되었기 때문하고 싶에 대한 정보를 제공하는 선택 항목의 컨텍스트 내에서 허용하는 사용자를 선택하는 다른 하나입니다.

도움이 되었습니까?

해결책

수도 있습 같은 것을 사용(의사 코드):

  • 계산 쿼리:$n=select count(uid)에서{사용자}는 곳이다.(페이징 조건을 포함하여 사용자 id123 로 제한)
  • $페이지=층($n/$pager_size);
  • 전시회:선택하이 무엇을,당신은,에서 원하는{사용자}어디(페이징 조건없이 제한),전달 db_query_range(쿼,$페이지,$pager_size)

당신은 정말 보 pager_query, 하지만,무엇 때문에 그것에 대한 모든이며,그것은 기본적으로 작동하고 다음과 같다:계산 쿼리하고 디스플레이 쿼리를 제외하고,그것을 구축하려고 세 쿼리를 자동으로 합니다.

다른 팁

고 가정하고 당신은 정말 어떻게 요구하는 페이지 레코드에서 SQL Server2005 이후,이 코드 데이비드 헤이든:

(를 변경해야 합니다 Date,설명을 열)

CREATE PROCEDURE dbo.ShowUsers
    @PageIndex INT, 
    @PageSize INT 
AS

BEGIN 

  WITH UserEntries AS ( 
  SELECT ROW_NUMBER() OVER (ORDER BY Date DESC) AS Row, Date, Description 
  FROM users)

  SELECT Date, Description
  FROM UserEntries 
  WHERE Row BETWEEN (@PageIndex - 1) * @PageSize + 1 AND @PageIndex * @PageSize

END 

SQL 지 않을 보장하기 위해 개체에 테이블을 사용하지 않는 경우에는 OrderBy 절입니다.다시 말해서,인덱스의 특정 행에서 변경될 수 있습니다 후속 쿼리를 처리합니다.설명할 수 있습니다 당신이 무엇을 달성하고자 하는 페?

에 관심이 있을 수도 있습니다 뭔가 시뮬레이션 rownum() Oracle MySQL...를 사용하는 경우 MySQL 물론 그것에서 지정하지 않은 질문입니다.


Notes:

당신이 볼 필요가 있을 통해 모든 기록을 당신의 페이지의 그것을 위해 작업은 물론이다.당신이 필요하지 않을 가져 다시 PHP 페이지에서 데이터베이스 서버지만 당신은 그들을 포함해야에서 쿼리를 실행합니다.마술 트릭의 위치를 결정하기 위해 귀하의 행 안에 결과를 설정하는 다른를 쿼리하는 것보다 그 결과로 설정을 변경할 수 있기 때문에 조건은,주문 및 그룹이 있습니다.그것은 필요하다.

의 경우 물론,모든 당신의 행은 순차적으로 증가 id,없이 삭제되며,당신이 알고있는 첫 번째와 마지막 id;다음을 사용할 수 있는 계산하고 간단한 수학을 얻을 위치지 않고를 쿼리하는 모든 것입니다....그러나 나는 당신의 경우,그것은하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top