임으로 정렬하기 order by field ( 컬럼명, "순서1", "순서2",.........)
조회 2,244 2026-08-18 등록
로그인하면 의견을 남길 수 있습니다.
아직 의견이 없습니다. 첫 의견을 남겨보세요.
게시글
group by 내에서 그룹으로 묶은 것에 대한 정렬하는 방법
select * from tablename as p where 1 and sidx_code in ( select max(sidx_code) from tablename where 1 and sidx_code=p.sidx_code ) group by p_title 위에 있는 필드 값을 접근하기 위해서는 위에 as p로 하고 p.sidx_code로 접근하면 된다.
서브쿼리 내용호출할때 사용 댓글수 많은것 순으로 정렬
select *,( select count(*) from table2 where 1 and table1.idx.code=table2.sidx_code //상위에 해당하는내용과 서브에 해당하는 내용을 일치시켜서 갯수호출함 group by sidx_code ) as count //count로 카운트 갯수를 표기함 from table1 where 1 order by count //전체 적인 지리문을 정렬함 첫번째 테이블 table1 두번째 테이블 table2 table1.idx_code값은 table2.sidx_code값과 동일함 sidx_code값은 여러게 존제함
rand()함수로 랜덤하게 정렬하기,select 내용를 랜덤으로 정렬하기
해당 레코드를 순서에 상관없이 랜덤으로 정렬할때는 select * from tablename order by rand() limit 0, 5 이렇게 하면 5개를 랜덤으로 정렬할수 있다 다른 정렬방식으로 최근게시글중 5개를 가저온다은에 그것을 랜던으로 호출하는 방법이다 예를 들어 idx_code -> 1,2,3,4,5,6,7,8,9,10 중에 10,9,8,7,6를 가저온후에 10~6까지를 랜덤으로 불러오는방법이다 (select * from tablename order by idx_code desc limit 0, 5) order by rand()
서브쿼리의 기본
select * from table where 1 and idx_code in (1,2,3,4,5) idx_code값중에 1,2,3,4,5를 가져온다 select * from table where 1 and idx_code not in (1,2,3,4,5) idx_code값중에 1,2,3,4,5아닌것을 가져온다 select * from table where 1 and idx_code in (select sidx_code table1 where 1) 검색된 내역중에 데이타 table1.sidx_code와 table.idx_code가 일치하는 내역만 호출
테이블2개일때 차집합,교집합 구하는 방법
A테이블,B테이블 각각존제할때 A.idx_code -> 1,2,3,4 B.idx_code -> 2,3 일때 B.idx_code값을 빼고 A.idx_code -> 1,4만 호출하는 방법 select * from A where code not in (select idx_code from B) -> 차집합을 구할수 있다 select * from A where code in (select idx_code from B) -> 2,3처럼 교집합 내용을 구할수 있다
여러게 필드를 조합해서 검색하는 방법
필드1,2,3의 내용을 합친후에 그내용을 검색하는 방법이다 where 1 and concat(필드1,필드2,필드3) like '%검색문구%'
문자를 숫자처럼 정렬하는 방법
데이타형이 int와 같은 숫자형태이면 그리 큰 문제 없이 asc,desc가 정렬된다 그러나 문자열일경우 2,10인경우 2>10으로 인식하게 된다 해서 2->02로 표현해서 정렬하게되는데 문자열이기 때문에 그렇다 해서 정렬할때 문자열도 숫자처럼 정렬하는 방법이다 1 11 12 19 2 20 아래와 같이 정렬하려할때 1 2 11 12 19 20 우선 int형으로 바꾸면된다 그것이 여이치 않을경우 int1 이라는 필드라가정했을겨우 order by int1+0 asc 이렇게 하면된다 편법을 써서 +0을 하는 순간 숫자가되기때문에 원하는대로 정렬할수 있다
기간차이를 계산한다음에 정렬하는 방법
날짜별로 정렬하는것은 desc,asc를 통해서 충분히 가능하지만 기간에 대한 차이를 정렬할때는 기간차를 구한후 정렬을 해야한다 이때 계산하는 방법은 (unix_timestamp(edate)-unix_timestamp(sdate)) 방법을 사용하면된다 select *, (unix_timestamp(edate)-unix_timestamp(sdate)) as turm from tablename where 1 order by turm desc
의견 0
로그인하면 의견을 남길 수 있습니다.
아직 의견이 없습니다. 첫 의견을 남겨보세요.