반응형
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
반응형
'source' 카테고리의 다른 글
특정 버전의 Composer를 다운그레이드 또는 설치하는 방법 (0) | 2022.12.18 |
---|---|
MariaDB/MySQL의 다단계 JSON에서 특정 값을 쿼리하는 중 (0) | 2022.12.18 |
FFT 출력 이해 (0) | 2022.12.18 |
Larabel 5 마이그레이션 식별자 이름이 너무 깁니다. (0) | 2022.12.18 |
매크로에서 1과 0을 정의하기 위해 3진 연산자를 사용하는 이유는 무엇입니까? (0) | 2022.12.18 |