2014-01-31 4 views
-1

MySQL에서 여러 행을 선택해야합니다. 프로 시저가 'proc_table'이라는 프로 시저를 갖게되어 db.cars에서 oid, objet 및 1 row의 3 개 필드를 반환합니다. 검색어가 제한되어 있습니다 (저).MySQL 처음 5 행 선택 (복수 행)

한계를 삭제하고 처음 5 행을 반환하는 쿼리를 작성해야합니다. 값이없는 경우 참조 (null 값이있는 필드)가 없습니다. 나는 '의사 코드'로 질의를한다.

Q : 특정 행을 선택하기 위해 MySQL의 어떤 기능을 사용해야합니까? 존재하지 않는다면 상황을 어떻게 다루어야합니까?

CREATE procedure `proc_table`() 
BEGIN 
    SELECT a.oid as 'oid', 
    a.objet as 'objet', 


-- limited query 
     (select tab2_oid from db.cars where tab1_oid = a.oid LIMIT 1) 
-- limited query 

    FROM db.tab1 as a; 
END$$ 

의사 코드

-- limited query 
     (select tab2_oid as 'first_row' from db.cars where tab1_oid = a.oid where row=1) 
     (select tab2_oid as 'second_row' from db.cars where tab1_oid = a.oid where row=2) 
... 

-- limited query 

답변

1

어떻게 조합과 LIMIT 문을 사용하는 방법에 대해?

select feld1,feld2 from 
(select feld1,feld2 from table1 where... LIMIT 1,1 
union all 
select feld1,feld2 from table2 where....LIMIT 2,1 
.... 
)a LIMIT 5        
+0

나는 LIMIT 1, 1과 같은 것을 발견했습니다. 제 2 행을 돌려 줄 것입니다. 이것은 노동 조합보다 조용하게 보입니다. 어떻게 생각하십니까? – boski

+1

내 문제는 정렬을 사용하지 않기 때문에 정렬되지 않은 데이터가 있고 모든 행을 캐치하고자하는 것입니다. 당신이 행을 지정하고 싶은 경우에는 order by를 사용하고 where 절을 사용하거나 (1,1과 같은) limit 함수를 사용하여 임의의 행을 표시하고 싶지만 순서가없는 순서는 임의의 데이터를 표시합니다 – GBoehm

+0

나는 그 방법으로 그것을하기로 결심한다. 도움을 주신 덕분에 – boski