Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

junções internas implícitas - elas são iguais?


Vou abordar a questão de saber se essas desigualdades são sempre verdadeiro. A resposta é "não", não em SQL. Na maioria das circunstâncias, eles são equivalentes. O problema surge com a conversão de tipo implícita.

Em particular, se a.id é um número e outras colunas são strings, então você tem a situação em que:
1 = '1'        -- true
1 = '1.00'     -- true
'1' = '1.00'   -- false

Você pode ver isto neste db<>fiddle. Seria trivial configurar isso usando JOIN s, mas como não vou escrever código que tenha vírgulas no FROM cláusula, vou deixar esse exercício para você.

Na prática, os id's usados ​​para junções devem ser do mesmo tipo. Você não pode nem mesmo declarar um relacionamento de chave estrangeira se eles não forem. Deixando de lado essa prática recomendada, as duas consultas não são automaticamente equivalentes.

Observação:isso também seria verdade se você usasse um padrão adequado, explícito e JOIN sintaxe, que eu fortemente encorajo você a aprender e usar exclusivamente.