SELECT user_info.name, b.src_query
FROM user_info,
(SELECT * FROM query_info
WHERE src_query LIKE '%경제%') b
WHERE user_info.reg_num = b.reg_num
이런 구문을 7.0.x 까지는 지원하지 않았는데,
이제 지원하더군요. 꽤나 유용하게 쓰이는 구문입니다.
물론 아래와 같은 경우라면, WHERE ... IN 형태의 subquery가
더 빠르게 작동할 것같군요.
>>정재익 님께서 쓰시길<<
:: 아래와 같이 사용하는 query 는 가능합니다.
:: 지금 에러가 발생한 이유는 where 절에서 (exp1) = (exp2) 이런식의 구문을 사용했을때 exp1 의 값과 e
:: xp2 의 값이 당연히 하나가 되어야만이 = (equal) 연산자가 만족됩니다. 아래 query 에서 select reg_n
:: um from query_info where src_query like '%경제%'; 라는 절의 query 결과 돌아오는 결과값이 하나가
:: 아닌 둘 이상이 돌아오기 때문에 아래와 같은 에러가 발생한 것입니다.
::
:: 만약 원하는 query 가 아래 처럼 exp2 에 둘이상의 값이 돌아오더라도 상관이 없고, user_info.reg_num
:: 이 그 중 하나만 만족해도 된다면 = 연산자 대신에 IN 이라는 연산자를 사용해 주시기 바랍니다.
::
:: SELECT user_info.name, query_info.src_query
:: FROM user_info, query_info
:: WHERE user_info.reg_num IN (SELECT reg_num FROM query_info
:: WHERE src_query LIKE '%경제%')
::
:: >>김재청 님께서 쓰시길<<
::
:: :: SELECT user_info.name, query_info.src_query
:: :: FROM user_info, query_info
:: :: WHERE user_info.reg_num = (SELECT reg_num FROM query_info
:: :: WHERE src_query LIKE '%경제%')
:: ::
:: :: 이렇게 사용하는게 가능한가요
:: ::
:: :: 먼저 query_info 테이블에서 src_query가 경제 인것의 reg_num을 찾아서 그 reg_num을 가지고 다시
:: joi
:: :: n한 테이블에서 user_info.name 과 query_info.src_query 를 출력할려고 합니다 그런데 잘안되는구
:: 요 E
:: :: RROR 가 나는데 메시지는 이렇게 뜹니다
:: ::
:: :: ERROR: More than one tuple returned by a subselect used as an expression.
:: ::
:: :: 에러의 의미는 알겠는데 이query를 그럼 어떻게 써야 할까요....
:: :: 알려주시면 너무 감사하겠습니다
|