Ed
há 24 horas
Vamos analisar as opções apresentadas para identificar qual delas mostra corretamente a sintaxe de uma subconsulta aninhada no SQL Server. A) `SELECT * FROM Tabela1 WHERE Coluna1 = (SELECT Coluna2 FROM Tabela2 WHERE Coluna3 = Valor);` - Esta opção é uma subconsulta aninhada válida, onde o resultado da subconsulta é usado para comparar com `Coluna1`. B) `SELECT * FROM Tabela1 JOIN (SELECT Coluna2 FROM Tabela2 WHERE Coluna3 = Valor) AS Sub ON Tabela1.Coluna1 = Sub.Coluna2;` - Esta opção utiliza uma subconsulta, mas não é uma subconsulta aninhada no sentido tradicional, pois está usando um JOIN. C) `SELECT * FROM Tabela1 WHERE Coluna1 IN (SELECT Coluna2 FROM Tabela2 WHERE Coluna3 = Valor);` - Esta opção também é uma subconsulta aninhada válida, onde o resultado da subconsulta é usado para verificar se `Coluna1` está dentro do conjunto retornado. D) `SELECT * FROM Tabela1 WHERE Coluna1 = ANY (SELECT Coluna2 FROM Tabela2 WHERE Coluna3 = Valor);` - Esta opção é válida, mas a cláusula `ANY` não é tão comum quanto o uso de `=` ou `IN` em subconsultas aninhadas. E) `SELECT * FROM Tabela1 WHERE EXISTS (SELECT Coluna2 FROM Tabela2 WHERE Coluna3 = Valor);` - Esta opção utiliza a cláusula `EXISTS`, que é uma forma de subconsulta, mas não é uma subconsulta aninhada no sentido de retornar um valor específico para comparação. Dentre as opções, tanto a A quanto a C são subconsultas aninhadas válidas. No entanto, a opção C é mais comum e flexível, pois permite que `Coluna1` compare com múltiplos valores retornados pela subconsulta. Portanto, a resposta correta é: C) SELECT * FROM Tabela1 WHERE Coluna1 IN (SELECT Coluna2 FROM Tabela2 WHERE Coluna3 = Valor);