>>정재익 님께서 쓰시길<<
::
:: >>김상기 님께서 쓰시길<<
::
:: :: 밤사이 계속 고민을 하다가 도저히 답이 안나와서 이곳에 포스팅합니다.
:: ::
:: :: 테이블은 다음과 같습니다.
:: ::
:: :: f1 | f2 | f3
:: :: /////+/////+/////
:: :: abc | def | ghi
:: :: dhi | def | bca
:: :: ghi | cab | def
:: :: bac | ghi | def
:: ::
:: :: 원하는 결과: 이 테이블(t)에서 어떤 필드에라도 a 라는 글자가 들어가는
:: :: 레코드를 찾는데, 그 결과를 f1, f2, f3 필드 우선 순위로 나열하는 것입니다.
:: ::
:: :: 즉,
:: :: abc | def | ghi
:: :: bac | ghi | def
:: :: ghi | cab | def
:: :: dhi | def | bca
:: ::
:: :: 이런 결과가 나와야겠지요.
:: ::
:: :: select * from t
:: :: where f1 like '%a%'
:: :: or f2 like '%a%'
:: :: or f3 like '%a%'
:: :: order by f1
:: ::
:: :: 이 쿼리로는 안되는군요. /./
:: :: db 쿼리로 이 문제를 해결할 수 있지 않을까요?
:: ::
::
:: union 으로 해결되지는 않을까요. (해보지는 않았습니다)
예, 이방법으로는 됩니다.
select * from t where f1 like '%a'
union select * from t where f2 like '%a'
union select * from t where f3 like '%a'
문제는 t 테이블의 데이터가 약 만개 정도 되니까,
속도에서 걸리더군요.
그래서, 혹 다른 방법이 있나 해서.
|