2013-07-28 2 views
0

필자는 행 세트를 가지고 있습니다 (실제로 필터링되고 정렬 된 mysql 테이블입니다).
또한 행 번호로 사용하고자하는 (5,9,12,67,2,3)과 같은 정수 값 집합이 있습니다.MySQL 테이블에서 행 번호를 사용하여 일부 행을 선택하는 방법은 무엇입니까?

질문 :이 숫자를 사용하여이 세트에서 행을 가져 오는 더 좋은 방법은 무엇입니까?

예 : 15 행으로 설정되었습니다. 그리고 숫자 (1,5,7). 1, 5, 7 번 행을 어떻게 얻을 수 있습니까?

+0

어쩌면이 [http://stackoverflow.com/questions/ 2728413/equivalent-of-oracles-rowid-in-mysql) 당신에게 힌트를 줄 것이다. 그러나 왜 당신은 rownumber로 놀고 있는가? 또한 [읽기이] (http://stackoverflow.com/a/11130318/1066828) –

+0

@ FahimParkar 나는 주어진 행 집합에서 N 임의의 줄을 가져야한다 미친 선택 알고리즘을했습니다. 라인 번호는 특별한 복잡한 알고리즘에 의해 생성 된, 그래서 그것을 위해 MySQL을 사용할 수 없습니다. –

+0

행 세트를 어떻게 가져 옵니까? 그것은 단지 SQL 쿼리입니까 아니면 다른 프로그래밍 언어를 사용하고 있습니까? –

답변

0

에 한번이 코드를 사용하는 선택 * (SELECT *에서, @rowid : = @ ROWID + 1 테이블의 ROWID로, (@rowid SELECT : = 0) 초기화 어디로 ... 순서대로 ...) t 어디 t.rowid (... 숫자 집합 ...)

0

미안 그냥 불똥이 튄과 좋은 습관 나는이 시도 할 것이다 이렇게 대답 모른다 :

당신은 AUTO_INCREMENT 인덱스가를 사용하는 경우를?

당신이

SELECT @currentRow := @currentRow + 1 AS row_number, * 
FROM table, (SELECT @currentRow:=0) as init 
WHERE row_number IN 1,5,7 

같은 임의의 수 (뭔가 WHERE에 문제가 있습니다) 할 수없는 경우

예 내가 그것을 알아 낸 가지고 있지만 @Epsiloncool이 훨씬 더 빨리 그것을 할 seemd.

배를 선택 어디 당신이 얻을하는 데 도움이 :

SELECT * FROM 
(SELECT *, @currentRow := @currentRow + 1 AS row_number 
    FROM table t, (SELECT @currentRow := 0) AS init) AS table 
WHERE cdees.row_number IN 1,5,7 
+0

사실 나는 이것을 테스트했으며 작동하지 않습니다. D와 "오타"WHERE row_number도 있습니다. –

+0

@Alexey에서 currentRow의 초기화가 누락되었음을 깨달았습니다. 그러나 여전히 어떻게 든 작동하지 않습니다. –

+0

그렇습니다. 일찍 시도했지만 작동하지 않습니다. 왜냐하면 row_number는 실제 본문이 아닌 실제 본문에서 사용할 수없는 값으로 계산되기 때문입니다. –

관련 문제