requête Mysql mise à jour + SELECT
-
19-09-2019 - |
Question
Je veux mettre à jour le tableau de données pour ceux qui obtiennent id examen 1,2 plus de 80. J'essaie cette
UPDATE data
SET column = 'value'
WHERE
(SELECT * FROM exams
WHERE (id = '1' AND score >= 80) AND (id = '2' AND score >= 80));
Il me donne 0 résultat. Mais il devrait avoir quelques centaines résultats d'aide ??
Je pense que le problème est le suivant:
SELECT * FROM exams
WHERE (id = '1' AND score >= 80) AND (id = '2' AND score >= 80)
Il donne 0 résultat. Comment sélectionner ceux qui obtiennent plus de 80 points pour les deux examens 1 et 2 ??
La solution
Vous interrogez ne fonctionnera pas parce que vous demandez aux examens qui ont id = 1 id = 2.
En supposant que id ne peut pas contenir deux valeurs en même temps, vous ne serez jamais aucun résultat.
Essayez comme base de votre mise à jour à la place: -
SELECT * FROM exams
WHERE score >= 80 AND id IN ( '1','2' )
Edité en fonction de commentaires: -
L'utilisateur ne veut que les personnes qui ont obtenu plus de 80 pour Les deux examens . En supposant que personid est une clé à la personne qui a pris l'examen.
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
Autres conseils
Je crois que votre instruction select devrait utiliser un OU:
SELECT * FROM exams
WHERE (id = '1' AND score >= 80) OR (id = '2' AND score >= 80)
Essayez ceci:
SELECT * FROM exams
WHERE (id = '1' OR id = '2') AND score >=80
Parce que vous ne pouvez pas avoir id ='1'
et id = '2'
simultanément le nombre de valeurs renvoyées dans votre cas est 0
.