MySQL 업데이트 + 쿼리 선택
-
19-09-2019 - |
문제
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
.
제휴하지 않습니다 StackOverflow