Resultado inesperado no sql
Por que este codigo:
Gera um resultado diferente deste:
Se o resultdo de:
É igual a 1?
Alguem consegue entender o pq deste resultado?
SELECT * FROM CONSULTA C1 WHERE C1.ID IN ( ´1´ )
Gera um resultado diferente deste:
SELECT * FROM CONSULTA C1 WHERE C1.ID IN ( SELECT FIRST 1 C2.ID FROM CONSULTA C2 WHERE C2.PRONTUARIO=´5656´ )
Se o resultdo de:
SELECT FIRST 1 C2.ID FROM CONSULTA C2 WHERE C2.PRONTUARIO=´5656´
É igual a 1?
Alguem consegue entender o pq deste resultado?
Lorde_morte.
Curtidas 0
Respostas
Lorde_morte.
12/10/2006
Achei a resposta no Releasenotes do FB 1.5.108 (pág.29) e descobri isso :
Tracando a pergunta.
Como contornar este defeito?
2. Queries como esta:
...
WHERE F1 IN ( SELECT FIRST 5 F2 FROM TABLE2 ORDER BY 1 DESC )
não funcionam como esperado, por causa da otimização processada atualmente pelo servidor que trata
os predicados correlacionados WHERE...IN (SELECT...) em predicados correlacionados EXISTS. É óbvio
que neste contexto FIRST N não faz qualquer sentido:
WHERE EXISTS (
SELECT FIRST 5 TABLE2.F2 FROM TABLE2
WHERE TABLE2.F2 = TABLE1.F1 ORDER BY 1 DESC )
Tracando a pergunta.
Como contornar este defeito?
GOSTEI 0