mysql 로 if를 써서 select 문을 만들고 있는데 원하는결과가 안나옵니다.

안녕하세요

mysql select 쿼리를 짜고 있는데

위의 테이블이 content_info 라고 한다면

code - 시퀀스
cust_code - 사용자별 코드 (ALL 일 경우 모두사용) 사용자별로 써야할경우 사용자코드가 들어갑니다.
contentCode - 컨텐츠 코드
contentName - 노출 컨텐츠 명

dflkjadlkfjlksdajflkads

content_code가 같은값이고 cust_code에 사용자의 코드가 있을경우 ALL이 아니라 사용자별 컨텐츠가 있는 해당컨텐츠를 노출시키려합니다. cust_code가 po123 일때 아래 사진처럼 셀렉을 하고 싶은데 방법을 모르겠습니다.

%EA%B2%B0%EB%A1%B8

다 불러와 프로그램단에서는 할수있지만 프로그램단에서 하지 않고 쿼리실행으로 위와같은 결과를 가져올수있을까요?

where절에 if 도 써보고 case 문도 써봤는데 원하는결과를 얻지 못했습니다.

임시 테이블(컬럼은 contentCode, count)을 만들고, 거기에 첫번째 테이블에서 각 contentCode별로 갯수를 세서 기록합니다.
그 테이블에서 count가 2인 경우는 cust_codeALL인 경우를 제외하고, count가 1인 경우는 그대로 선택하는 방식으로 SELECT를 사용하시면 됩니다.

저는 임시 테이블보단 테이블 변수가 편해서, 이걸 써보면 이렇게 됩니다.

DECLARE @cnttable TABLE(
    contentCode int NOT NULL,
    cnt int NOT NULL
);

DECLARE @result TABLE(
    code int NOT NULL,
    cust_code nvarchar(10) NOT NULL,
    contentCode nvarchar(10) NOT NULL,
    contentName nvarchar(10) NOT NULL
);

INSERT INTO @cnttable
SELECT contentCode, COUNT(*)
FROM content_info
GROUP BY contentCode

INSERT INTO @result
SELECT i.code, i.cust_code, i.contentCode, i.contentName
FROM content_info AS i
JOIN @cnttable AS c
WHERE i.contentCode = c.contentCode AND c.cnt = 1

INSERT INTO @result
SELECT i.code, i.cust_code, i.contentCode, i.contentName
FROM content_info AS i
JOIN @cnttable AS c
WHERE i.contentCode = c.contentCode AND c.cnt != 1 AND i.cust_code != 'ALL'

SELECT *
FROM @result

감사합니다. 덕분에 많은걸 배운것같아요. 아직 많이 배워야 할 것같습니다. ㅠ.ㅠ 카운트는 생각을 못했어요.

본문과는 상관 없지만… 방패 다셨네요. 축하드립니다.

앗 감사합니당:smile: