select 문에서 limit 걸기(mysql)

select 문에서 limit 걸기(mysql)

작성일 2009.11.02댓글 1건
    게시물 수정 , 삭제는 로그인 필요

 

  <표1>       <표2>

 

<표1>

$qry=mysql_query(select * from table)

$total_rows=mysql_num_rows($qry)

 for($i;$i<$total_rows;$i++){

  data_seek($qry,$i)

  $set=mysql_fetch_array($qry)

 echo($set[내용]);

 }

 

 

 

 

 

<표2>

$qry=mysql_query(select * from table)
$total_rows=mysql_num_rows($qry)
 for($i;$i<$total_rows;$i++){
  data_seek($qry,$i) 
  $set=mysql_fetch_array($qry)
   if($set[내용]='2') {
    $count_num2=$count_num2+1
     if($count_num2>5) {""}
     else{ echo($set[내용]) }
  } else if($set[내용]='1'){

    $count_num3=$count_num3+1
      if($count_num3>5){""}
     else{echo($set[내용])}
  } else {echo($set[내용])}

 }

 

 

 

대충 느낌만을 만들려고 적은 쿼리임으로 문법이 틀렸다는 둥의 태클은 사양합니다.

표 1에서는 db의 내용을 전부 출력하는 것입니다.

 

표 2에서는 특정 값을 가지고 있는 값에 대해서는 db에서 갯수를 제한해서 출력하는 것입니다.

 

쿼리문 보면 대충 어떤 느낌인지 아실것입니다.

 

select * from table where (내용=1 limit 5) and (내용=2 limit 5) and 1=1

 

대충 이딴식의 쿼리를 만들고 싶습니다.

 

for 문에 if 문 까지 돌리는 복잡한 쿼리가 아니라,

한줄에 끝낼 수 있는 단순한 쿼리를 만들고자 합니다.

 

가능한지.. 가능하다면 어떤식으로 짜야 할지 알려주시면 감사하겠습니다.



profile_image 익명 작성일 -

감이 좀 안오는데요..

 

표2에서 보면 값이 빠져 있는데요...(아이디가 3이고, 내용이 2일경우에 값이 빠져있는데요..)

 

그걸 보고 갯수를 제한한다고 말한건가요??

 

원하시는거하곤 별로 Limit하곤 관계가 없어보입니다.

 

먼저 , Limit기능이 뭔지 알아야겠네요.

 

Limit는 오라클의 Rownum()과, MS-sql의 TOP기능과 마찬가지로, 출력 게시물의 갯수를 제한하는 역할을 합니다.

 

능력으로 치자면 Top는 높은기능이지만, Rownum()는 약합니다.

(top은 단순히 상위 갯수만을 표시할수 있지만, Limit는 (Limit 시작인덱스,가져올갯수)를 통해 중간의 갯수를 가져올수있습니다.)

 

하지만, 그뿐이죠. 중복해서 리미트를 쓸수는 없습니다.

 

일정구간의 한번만 가져올수있습니다.

 

때문에 원하시는 내용 은 처음부터 끝까지 데이터를 가져오고,

 

중간의 아이디=3,내용=2일경우 안나오도록 하는 조건을 가지는 케이스잖아요?

 

그러니 Limit하곤 전혀 관계 없다고 볼수있습니다.

 

Limit 기능은 어디까지나 마지막 최종 얻어진(Where구문을통해) 레코드의 시작인덱스부터, 원하는 곳까지의 갯수를 가져오는 것입니다~

 

위의 표2의 엑셀을 테이블로 표현할 경우 처음부터 끝까지 레코드를 구하고, 중간중간에 해당레코드 출력문을 제어하는게 좋을듯합니다

select 문에서 limit 걸기(mysql)

... select * from table where (내용=1 limit 5) and (내용=2 limit... for 문에 if 까지 돌리는 복잡한 쿼리가... Limit는 오라클의 Rownum()과, MS-sql의 TOP기능과...

mysql 명령문 -> select * from s...

select * from s_member order by date desc limit 0,7; 이 명령문을 오라클 DB문으로 바꾸고 싶은데 어떻게 바꿔야 할까요?? select * from s_member order by...

mysql LIMIT 관련

... 눈으로 Limit의 index값을 확인하고 싶으시다면 다음과 같은 sql을 활용해보실 수 있습니다. select * from (select (@Row_number:=@Row_number+1)-1 idx,tabl.* from...

변환? rder by number desc limit

jsp에서 mysql문 s_sql = "select number,subject,name,from_unixtime(writetime,'%Y/%m/%d... desc limit "+i_offset+","+i_list_num; 을 오라클문으로 변환하려면...

mysql select가 안되요

... 쿼리를 $tmp1 = mysql_query("select * from shop where Count='01' or Register_O='X' ORDER BY 'Index' DESC LIMIT 79, 30... 나오는 sql 구문 복사해서 사용해도 맘대로...

mysql select문 질문합니다.

select point,name from member order by point desc limit 10; 을 통하여 랭킹... 아래의 SQL 을 참고해보시지요. 그럼... SELECT point,name FROM member WHERE name...

mysql query count(*) 수 제한하기?

... 이렇게 하니 TABLE_NAME 의 모든 데이터의 수를 count하는데 select * from TABLE_NAME order by rand() limit 50 ; 이렇게 하면 랜덤으로 50개만 되는데 count는...

oracle, mysql 관련 질문입니다

... 위 sql 문은 오라클 db 기반인데요, mysql 기반의 쿼리문으로... notice_board, (select @rownum := 0) b order by nidx desc LIMIT (#{pageNum} * #{amount}) ) a...