하나의 테이블에서 최대 250 개의 행을 선택하려고합니다. 먼저 locked='1'
열을 가진 ALL
행을 선택하고 열 locked = '0'
열을 가진 행 수를 선택하십시오. since
(타임 스탬프).MySQL UNION 및 ORDER - 단일 테이블에서 여러 SELECT 쿼리
X는 firest 쿼리의 250 번째 행입니다.
나는이 시도 :select * from (
select * from aktivni as a1 where locked = '1'
union
select * from aktivni as a2 where locked = '0'
) as tb1 limit 250
을하지만,이와 나는 (안 since
으로 정렬) 두 번째 질의에 정확한 값을 얻을 수 없습니다.
나는이 할 수 있다면 : 모든 것보다
select * from (
select * from aktivni as a1 where locked = '1'
union
select * from aktivni as a2 where locked = '0' ORDER BY since DESC
) as tb1 limit 250
가 since
에 의해 주문하고 내가 가진 ALL
값을 얻을하지 않습니다를 열 locked
세트에 1
조합 올바른 접근 방식이나 내가 할 수 있나요 뭔가 다른 거?
해결 방법은 PHP로 코드를 작성하는 것입니다. 내가 행을 계산하는 것보다 SELECT * FROM table WHERE locked = '1'
와 두 번째 질의와 나머지 행 SELECT * FROM table WHERE locked = '0' LIMIT (250 - num_rows_from_first_query)
를 얻을 수 있지만, 나는 그것을 피하려고 : 우선은 모든를 선택합니다.
좋은 답변 @sgeddes을, 당신이 할 수있는 당신이 괜찮다면 'order by'에 어떤 조건이 올지 설명해주십시오. –
@VishalZanzrukia - 조건은 모든 결과를'locked = 1 '로 먼저 지정한 다음 나머지 결과를'since desc'로 정렬합니다. '제한'과 함께 원하는 결과를 얻을 수 있습니다. – sgeddes
'선택 잠김, 잠긴 오름차순에 의한 aktivni 순서, desc imit 5 이후 '는이 쿼리와 ans 사이에 어떤 차이가 있습니까? –