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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top