source

SQL - 특정 조건을 가진 행을 선택하는 방법

gigabyte 2022. 12. 18. 08:35
반응형

SQL - 특정 조건을 가진 행을 선택하는 방법

SQL 세계 초보자이며 Windows 7에서 MariaDB 10.1을 사용하고 있습니다.

제가 만든 테스트 코드입니다.

CREATE TABLE sample (
    studentName VARCHAR(32),
    subjectName VARCHAR(16),
    subjectRegistration BOOLEAN
);

INSERT
INTO    sample VALUES
    ("Tom", "Math", TRUE),
    ("Tom", "English", TRUE),
    ("Tom", "Science", TRUE),
    ("Jane", "English", TRUE),
    ("Jane", "Math", TRUE),
    ("Jane", "Science", TRUE),
    ("Peter", "Math", TRUE),
    ("Susan", "Math", TRUE),
    ("Susan", "Science", TRUE),
    ("Clark", "Math", TRUE),
    ("Clark", "English", TRUE),
    ("Clark", "Science", TRUE);

수학만 등록한 학생을 선택하고 싶습니다.(이 경우는 피터입니다)

SELECT * FROM sample WHERE subjectName = 'Math' AND subjectRegistration = TRUE;

이 쿼리는 Peter뿐만 아니라 다른 주제를 등록한 모든 사람을 선택합니다.

어떤 쿼리를 사용해야 합니까?

잘 부탁드립니다.

당신이 원하는 것은 수학만 수강한 학생들을 포함시키는 것이다.sql에서 이 작업을 수행하는 방법에는 여러 가지 종류가 있습니다.전체적인 생각은 누가 수학을 듣고 오직 한 과목만 수강했는지 알아내는 것이다.이것은 그 방법의 몇 가지 예에 불과하지만, 각각의 예에 의해서 작업이 완료됩니다.

SQL Fidle에서 각 예를 확인할 수 있습니다.

예 1:

SELECT * 
  FROM sample 
 WHERE subjectName = 'Math'
   AND subjectRegistration = TRUE  
   AND studentName IN (SELECT studentName 
                         FROM sample 
                        WHERE subjectRegistration = TRUE
                       GROUP BY studentName 
                       HAVING count(*) = 1)

예 2:

SELECT *
  FROM sample s
       JOIN (SELECT studentName 
               FROM sample 
              WHERE subjectRegistration = TRUE
             GROUP BY studentName
             HAVING count(*) = 1) s2 ON (s.studentName = s2.studentName)
 WHERE s.subjectName = 'Math'
   AND subjectRegistration = TRUE 

나는 사용할 것이다.not exists:

select s.*
from sample s
where subjectRegistration = true and
      not exists (select 1 
                 from sample s1
                 where s1.studentName = s.studentName and 
                       s1.subjectName <> 'Math'
                 );

언급URL : https://stackoverflow.com/questions/51373018/sql-how-to-select-the-row-that-has-specific-condition

반응형