[SQL] 다른테이블에서 특정쿼리만 사용하기

도리·2025년 2월 14일

programmers lv2. 조건에 맞는 개발자 찾기

코드 최적화하기.

내 코드

SELECT id, email , first_name, last_name
from developers 
WHERE skill_code & (SELECT code from skillcodes WHERE name = "C#") = (SELECT code from skillcodes WHERE name = "C#")
    or skill_code & (SELECT code from skillcodes WHERE name = "Python") = (SELECT code from skillcodes WHERE name = "Python")
ORDER BY id

최적화하기

  • from 절에 서브쿼리 만들면된다. 그러면 skillcodes에서 해당하는 조건을 한번만 찾아서 select 할 수 있다.

1안

SELECT 
  d.id, 
  d.email, 
  d.first_name, 
  d.last_name
FROM developers d,
     (
       SELECT 
         (SELECT code FROM skillcodes WHERE name = 'C#') AS csharp_code,
         (SELECT code FROM skillcodes WHERE name = 'Python') AS python_code
     ) sc
WHERE (d.skill_code & sc.csharp_code = sc.csharp_code)
   OR (d.skill_code & sc.python_code = sc.python_code)
ORDER BY d.id;

2안

SELECT DISTINCT 
    d.id, 
    d.email, 
    d.first_name, 
    d.last_name
FROM developers d
JOIN skillcodes s 
    ON (
         (s.name = 'C#' AND (d.skill_code & s.code) = s.code)
      OR (s.name = 'Python' AND (d.skill_code & s.code) = s.code)
       )
ORDER BY d.id;

이때 distinct는 두번 만족하는 애를 삭제하기 위해 사용됨. ~~

profile
인공지능응용학과 졸업

0개의 댓글