문제

Exam ID 1,2 이상 80 이상을 기록하는 사람들을 위해 데이터 테이블을 업데이트하고 싶습니다. 나는 이것을 시도합니다.

UPDATE data
SET column = 'value'
WHERE
(SELECT * FROM exams
WHERE (id = '1' AND score >= 80) AND (id = '2' AND score >= 80));

그것은 나에게 0 결과를 준다. 그러나 수백 개의 결과가 도움이되어야합니다.

문제는 이것이라고 생각합니다.

SELECT * FROM exams
WHERE (id = '1' AND score >= 80) AND (id = '2' AND score >= 80)

0 결과를 제공합니다. 시험 1과 2 모두에서 80 점 이상 점수를 매기는 사람들을 선택하는 방법 ??

도움이 되었습니까?

해결책

당신이 요구하기 때문에 쿼리는 작동하지 않습니다 시험 ID = 1이 있습니다 그리고 ID = 2.

ID가 동시에 두 값을 보유 할 수 없다고 가정하면 결과를 반환하지 않습니다.

대신 업데이트의 기초로 이것을 시도하십시오.

SELECT * FROM exams
WHERE score >= 80 AND id IN ( '1','2' )

주석에 따라 편집 :-

사용자는 80 점 이상을 기록한 사람들 만 원합니다. 둘 다 시험. 가정합니다 페르소드 시험을 치른 사람의 열쇠입니다.

SELECT e1.personid FROM
(
   SELECT personid FROM exams  WHERE score >= 80 AND id = '1' 
) e1
INNER JOIN
(
   SELECT personid FROM exams  WHERE score >= 80 AND id = '2' 
) e2
ON
  e1.personid = e2.personid

다른 팁

나는 당신의 select 진술서가 OR을 사용해야한다고 생각합니다.

SELECT * FROM exams
WHERE (id = '1' AND score >= 80) OR (id = '2' AND score >= 80)

이 시도:

SELECT * FROM exams
WHERE (id = '1' OR id = '2') AND score >=80

당신은 가질 수 없기 때문입니다 id ='1' 그리고 id = '2' 동시에 귀하의 경우에 반환 된 값 수는 다음과 같습니다. 0.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top