-
Essa questão pede um pouquinho de fosfato nosso. Como sabemos, o uso de SUBSELECT pode ser feito dentro do SELECT, e que neste caso, o SUBSELECT deveria estar amarrado com o SELECT de fora. Essa amarração geralmente se faz pela PK e serve para garantir que o SUBSELECT só retorne registros que estejam amarrados pela chave PK. Vamos pensar assim: O Subselect não pode ser executado sozinho e o select de fora não pode ser executado sozinho, isso traria resultados diferentes, por isso amarramos com a PK, como? A PK do subselect tem que ser igual a PK do select de fora. Simples, né?
Na questão, ele está fazendo a mesma coisa, ele está amarrando a coluna A e a coluna B de dentro com a coluna A e B de fora. Como sabemos que o EXISTS retorna TRUE se o select retornar linhas, então podemos concluir que se ele amarrou a chave de dentro com a chave de fora, ele sempre irá retornar registros, logo o EXISTS retornará TRUE e o DELETE ocorrerá na tabela TODA!
-
Com o EXISTS toda a comparação verdadeira do where trás o resultado para o delete realizar a sua função.
-
Só olhando as alternativas daria para responder bem rápido. Como tem um exist dentro do delete, então a resposta poderia ser todos os registros ou nenhum, já que o exists retorna falso ou true.
-
Cuidado, gente. Tem muito comentário errado nessa questão.
O motivo de ter deletado todos é porque está sendo comparado 2 tabelas iguais, portanto, um registro de uma tabela será igual a ele mesmo da outra tabela.
-
o EXISTS, além de testar se a condição é verdadeira, traz como retorno os dados da consulta.