consulta de mysql Atualização + SELECIONAR
-
19-09-2019 - |
Pergunta
Eu quero tabela de dados atualização para aqueles que marcar id exame 1,2 mais de 80. I tentar este
UPDATE data
SET column = 'value'
WHERE
(SELECT * FROM exams
WHERE (id = '1' AND score >= 80) AND (id = '2' AND score >= 80));
Isso me dá 0 resultado. Mas ele deve ter poucas centenas resulta Qualquer ajuda ??
Eu acho que o problema é o seguinte:
SELECT * FROM exams
WHERE (id = '1' AND score >= 80) AND (id = '2' AND score >= 80)
Ela dá 0 resultado. Como selecionar aqueles que marcar mais de 80 pontos para ambos exames 1 e 2 ??
Solução
Você consulta não trabalho, porque você está pedindo exames que têm id = 1 E id = 2.
Assumindo que id não pode conter dois valores ao mesmo tempo, você nunca nenhum resultado.
Tente isto como a base de sua atualização em vez disso: -
SELECT * FROM exams
WHERE score >= 80 AND id IN ( '1','2' )
editado com base em comentário: -
Usuário quer únicas pessoas que marcou mais de 80 para ambos exames. Assumindo personid é uma chave para a pessoa que fez o exame.
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
Outras dicas
Acredito que sua instrução select deve usar um OR:
SELECT * FROM exams
WHERE (id = '1' AND score >= 80) OR (id = '2' AND score >= 80)
Tente isto:
SELECT * FROM exams
WHERE (id = '1' OR id = '2') AND score >=80
Porque você não pode ter id ='1'
e id = '2'
simultaneamente o número de valores retornados no seu caso é 0
.