안녕하세요, Data Explorer에서 쿼리를 편집하고 실행할 때 이상한 동작을 발견했습니다. 특정 카테고리의 주제에서 게시물을 선택하기 위해 WHERE와 IN 연산자를 사용하려고 합니다:
WHERE
t.category_id IN (420, 421, 426)
하지만 WHERE 조건이 의도대로 작동하는지 확신이 없습니다. 해당 카테고리가 생성된 이전 기간에 대해 쿼리를 실행하면, 카테고리와 관계없이 모든 주제가 나열됩니다. 또한 IN 연산자의 색상이 변하지 않으며, Data Explorer가 이를 연산자로 인식하는지 궁금합니다:
무슨 일이 일어나고 있는지 아는 분이 있을까요? 정말 감사합니다!
흠. 
어젯밤에도 아주 비슷한 쿼리에서 사용했는데, 내 경우에는 예상대로 잘 동작했어요.
혹시 다른 문제가 있는 건 아닌지 확인해 볼 수 있도록 전체 쿼리를 공유해 주시겠어요?
네, 시작합니다. 이 쿼리는 Gource가 처리할 수 있는 사용자 지정 로그 파일을 생성하는 데 필요한 정보를 가져오는 데 사용됩니다. 관련 문서: Custom Log Format · acaudwell/Gource Wiki · GitHub
-- 이 쿼리는 최신 게시글 목록을 가져오며,
-- 관련 사용자 정보와 토픽 세부 정보도 함께 조회합니다.
-- 결과는 생성일 기준 오름차순으로 정렬됩니다.
-- 선택된 필드는 다음과 같습니다:
-- timestamp: 게시글이 생성된 시점의 ISO 8601 또는 unix 타임스탬프.
-- username: 게시글을 작성한 사용자의 사용자 이름.
-- type: 액션 유형을 나타내는 하드코딩된 값 'A' (이 경우 '추가됨').
-- topic: 게시글이 속한 토픽의 ID.
-- post_number: 해당 토픽 내에서 게시글의 고유 번호.
-- reply_to_post_number: 이 게시글이 답글로 작성된 대상 게시글 번호 (해당하는 경우).
-- raw: 게시글 내용, 첫 30자로 제한.
-- category_id: 토픽이 속한 카테고리의 ID.
SELECT
p.created_at as timestamp,
u.username,
'A' as type,
p.topic_id as topic,
p.post_number as post_number,
p.reply_to_post_number as reply_to_post_number,
SUBSTRING(p.raw, 1, 30) AS raw,
t.category_id
FROM
posts p
JOIN
users u ON p.user_id = u.id
JOIN
topics t ON p.topic_id = t.id
WHERE
t.category_id IN (420, 421, 426)
AND t.created_at > '2022-01-01'
ORDER BY
p.created_at ASC
LIMIT 1000
모든 것이 정상적으로 보입니다.
최근 약 10일 전에 생성된 세 개의 새로운 문서 카테고리를 대상으로 동일한 AND t.created_at > '2022-01-01' 조건을 사용하여 실행해 보았더니, 해당 카테고리 외부의 데이터가 가져와지지 않는 것을 확인했습니다. (다만, 작은 액션 게시글이 많이 포함되어 있으므로, 사용 사례에 따라 이를 필터링할 필요가 있을 수 있습니다). AND t.created_at > '2022-01-01' 조건을 완전히 제거하고 실행해도 여전히 해당 카테고리에서만 데이터가 가져와집니다.