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 ??

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top