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 31111 게시물 읽기
No. 31111
쿼리 질문
작성자
아름다움
작성일
2017-08-28 14:34
조회수
4,578

안녕하세요,

mysql query 에서 잘 이해가지 않는 부분이 있어서 질문드립니다.

 

다음과 같이 0건이 나오게 하고 싶습니다.

select * from Customer where Division not in ('01','02','03');

결과 => 0건

 

 

그래서 concat 과 group_concat 을 넣어 sql을 작성하고,

결과값으로 '01,'02','03' 가 나오는 것을 확인하였습니다.

select concat('\'', group_concat(value separator '\'\,\''), '\'') val

from (select id from ComCd where value = 'cd004') a, ComCd b

where b.parentId = a.id

결과 => '01,'02','03'

 

 

그런데 위의 결과를 가지고 활용을 하면 전혀 not in 조건에 걸리지 않고 모든 건이 출력됩니다.

select * from Customer where Division not in (

select concat('\'', group_concat(value separator '\'\,\''), '\'') val

from (select id from ComCd where value = 'cd004') a, ComCd b

where b.parentId = a.id

);

 

 

대체 왜 이러는 걸까요??

not in 조건에 직접 값을 넣으면 정상작동하고, subquery 로 작성하여 넣으면 필터가 안되요.

힌트좀 알려주세요.

 

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

2번째 작성하신 쿼리의 결과가 묶여서 나왔는데..

'01'

'02'

'03'

각 각 넣은것이랑은 데이터가 같다고 볼 수 없습니다..

김주왕(kimjuking)님이 2017-08-28 14:56에 작성한 댓글입니다.

SELECT *
  FROM Customer
 WHERE Division NOT IN (SELECT b.value
                          FROM ComCd a
                             , ComCd b
                         WHERE a.id = b.parentId
                           AND a.value = 'cd004'
                        )
;

마농(manon94)님이 2017-08-29 08:05에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
31114많은 데이터테이블어서 100만건 쿼리할때 너무오래걸려요
김진열
2017-09-01
4526
31113mysql 비밀번호 관련 문의드립니다.
goblin
2017-08-29
4549
31112MySQL Enterprise & Community
님프
2017-08-28
4577
31111쿼리 질문 [2]
아름다움
2017-08-28
4578
31110mysql-5.7.11 에서 page_cleaner 오류
김성환
2017-08-28
4905
31109다른유형의 레코드형태를 조회할때 좋은 방법은 무엇일까요?
권순환
2017-08-23
4502
31108쿼리 문의 드립니다. [4]
김진호
2017-08-22
4577
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다