consulta mysql actualización + SELECT
-
19-09-2019 - |
Pregunta
Deseo actualizar la tabla de datos para aquellos que tengan una calificación Identificación del examen de más de 1,2 80. Intento de este
UPDATE data
SET column = 'value'
WHERE
(SELECT * FROM exams
WHERE (id = '1' AND score >= 80) AND (id = '2' AND score >= 80));
Me da 0 resultados. Pero debe tener pocos cientos resulta ninguna ayuda ??
Creo que el problema es el siguiente:
SELECT * FROM exams
WHERE (id = '1' AND score >= 80) AND (id = '2' AND score >= 80)
Se da 0 resultados. Cómo seleccionar aquellos que tengan una calificación más de 80 puntos, tanto para el examen 1 y 2 ??
Solución
consulta no funcionará porque usted está pidiendo exámenes que tienen id = 1 y ID = 2.
Identificación del supuesto de que no puede tener dos valores, al mismo tiempo, que nunca arrojó ningún resultado.
Trate esto como la base de su actualización en su lugar: -
SELECT * FROM exams
WHERE score >= 80 AND id IN ( '1','2' )
Editado en base a un comentario: -
El usuario quiere únicas personas que puntuaron más del 80 por ambos exámenes. Suponiendo PersonaID es una clave para la persona que tomó el 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
Otros consejos
Creo que su instrucción de selección debe utilizar un OR:
SELECT * FROM exams
WHERE (id = '1' AND score >= 80) OR (id = '2' AND score >= 80)
Prueba esto:
SELECT * FROM exams
WHERE (id = '1' OR id = '2') AND score >=80
Debido a que no se puede tener id ='1'
y id = '2'
al mismo tiempo el número de valores devueltos en su caso es 0
.