=
테스트 직후에 OR
을 입력 할 수 없습니다. 여러 값에 대해 단일 열을 테스트하려면 테스트를 반복해야합니다. SQL에서
stream = 'ms' OR stream = 'mba'
이에 대한 바로 가기가 : 당신은 쉼표로 구분 된 목록을 가지고 있기 때문에
는
stream IN ('ms', 'mba')
그러나, 이것은 디자인에 작동하지 않습니다. 회원 자격을 테스트하려면 FIND_IN_SET()
을 사용해야하며 여러 번의 테스트를위한 지름길은 없습니다.
SELECT university_name
FROM country
WHERE (FIND_IN_SET('ms', stream) OR FIND_IN_SET('mba', stream))
AND (FIND_IN_SET('GMAT', entrance_exam) OR FIND_IN_SET('MS', entrance_exam))
는 Query with multiple values in a column
그들이 AND
와 혼합 할 때 당신이 각 OR
표현의 주위에 괄호를 넣어 확인을 참조하십시오. SQL statement is ignoring where parameter
쉼표로 구분 된 목록 대신 데이터를 정규화하면 훨씬 더 좋습니다.
university_name stream
pune university ms
pune university mba
Acadia University ms
Acadia University mba
과 같은 행이 university_entrance
테이블 :
university_name exam
pune university GMAT
pune university MS
Acadia University GMAT
Acadia University MS
그런 다음 당신은 테이블을 조인 것을 : 당신은 같은 행으로 university_stream
테이블이 있어야합니다
SELECT DISTINCT a.university_name
FROM university_stream AS a
JOIN university_entrance AS b ON a.university_name = b.university_name
WHERE a.stream IN ('ms', 'mba')
AND b.exam IN ('GMAT', 'MS')
이 넣어 나쁜 디자인이다 데이터베이스 열에 쉼표로 구분 된 목록. 데이터를 표준화해야합니다. – Barmar
왜 당신은 자신의 테이블에 별도의 스트림을하지 말아요 – JoshKisb