Post

[Programmers] 301647번 - 부모의 형질을 모두 가지는 대장균 찾기 [MySQL]

[Programmers] 301647번 - 부모의 형질을 모두 가지는 대장균 찾기 [MySQL]

문제 링크


1. 문제 풀이


셀프 조인을 활용해서 해결했다. 자식 테이블의 부모 아이디와 부모 테이블의 아이디를 기준으로 JOIN 후 부모의 형질을 보유한 레코드만 필터링하면 된다. 형질은 2진수로 표현되어 있어서 비트 AND 연산으로 자식과 부모의 형질의 비트 AND 연산의 결과가 다시 부모 형질이 나오면 자식이 부모 형질을 모두 보유하고 있는 것이다.


2. 쿼리


1
2
3
4
5
6
7
8
9
SELECT
    c.ID,
    c.GENOTYPE,
    p.GENOTYPE AS PARENT_GENOTYPE
FROM ECOLI_DATA AS c
JOIN ECOLI_DATA AS p
    ON c.PARENT_ID = p.ID
WHERE c.GENOTYPE & p.GENOTYPE = p.GENOTYPE
ORDER BY c.ID;

This post is licensed under CC BY 4.0 by the author.