database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 30756 게시물 읽기
No. 30756
where 절에서 사용한 값으로 order by 할수있나요?
작성자
질문자
작성일
2014-09-05 14:17
조회수
8,483

예를들어

SELECT * FROM table WHERE test_function(field1,field2) > 1 

여기에서 where 절에서 사용한 test_function(field1,field2) 값으로 정렬을 할수있나요?

이 글에 대한 댓글이 총 4건 있습니다.

 이렇게 하시면 됩니다.

 

SELECT * FROM table WHERE test_function(field1,field2) > 1
ORDER BY test_function(field1, field2)

허정수(wertyu)님이 2014-09-06 09:29에 작성한 댓글입니다.

허정수님 답변감사합니다.

그렇게 함수를 두번 사용하게 되면 쿼리가 많이 늦어져서요.

한번 사용으로 정렬을 하고싶습니다.^^;

김정석님이 2014-09-06 10:16에 작성한 댓글입니다.
이 댓글은 2014-09-06 13:39에 마지막으로 수정되었습니다. Edit
네, 너무 간단한 답변이라서 다른 것이 숨어 있나 생각했었습니다. 그런데 test_function이 어떤 함수인지요?
 
1) 계산량이 많은 함수라서 함수 실행이 2번되는 것이 싫은 것인지?
2) 혹은, 레코드가 많아서 정렬하는데 시간이 많이 걸리는 것인지.
 
위 문제를 명확히 하는 것이 좋다고 생각됩니다. (물론 2개 모두 포함되는 문제일 수 있음)
 
1)의 경우, 
    
    SELECT f
    FROM (
        SELECT test_function(field1, field2) as f
        FROM table
    ) t
    WHERE f > 1
    ORDER BY f
 
으로 할 수 있을 듯 싶고요. 어차피 함수가 사용되었기 때문에 index를 사용하지 못할 것이라 원래 질의와 계산량은 동일할 듯 싶습니다.
 
그런데 test_function이 STORED FUNCTION (혹은 UDF)가 아닌 이상 저의 예상으로는 2)번 case같은데요. 사실 1이든 2이든, test_function의 값을 table에 컬럼으로 만들어 놓고 index를 걸어두면 편하긴 한데요. field1, field2가 dynamic 하다면 사용하기 어려운 방법이긴 하죠.
 
정확한 답변이 안 되서 죄송합니다.
 
허정수(wertyu)님이 2014-09-06 11:38에 작성한 댓글입니다.

답변 감사합니다.

1의 경우에 속한다고 봐야겠구요..

답변주신걸 토대로 쿼리를 다시 한번 짜서 시간 체크를 해봐야겠네요

감사합니다.^^

질문자님이 2014-09-06 13:45에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
30760mysql dump 관련 문의입니다 [1]
정의교
2014-09-15
8208
30758MYSQL 에 java class 파일을 심을려면 어떻게 해야 되나요? [1]
들어와
2014-09-12
8334
30757Node.js 와의 연동.
박남욱
2014-09-10
8315
30756where 절에서 사용한 값으로 order by 할수있나요? [4]
질문자
2014-09-05
8483
30755mysql 쿼리를 한페이지에 약 5천번 정도 해야 할꺼 같은데... [2]
박순채
2014-09-04
8528
30752쿼리문좀 도와주세요 [1]
울트라
2014-08-22
8371
30751유사도 찾기!! 조언 부탁드립니다. [1]
박용섭
2014-08-21
8444
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.049초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다