sql >> Databasteknik >  >> RDS >> Oracle

implicita inre sammanfogningar - är de lika?

Jag kommer att ta upp frågan om huruvida dessa ojämlikheter alltid är Sann. Svaret är "nej", inte i SQL. Under de flesta omständigheter är de likvärdiga. Problemet uppstår med implicit typkonvertering.

I synnerhet om a.id är ett tal och andra kolumner är strängar, då har du situationen där:

1 = '1'        -- true
1 = '1.00'     -- true
'1' = '1.00'   -- false

Du kan se detta på denna db<>fiol. Det skulle vara trivialt att ställa in detta med JOIN s, men eftersom jag inte kommer att skriva kod som har kommatecken i FROM klausul, jag överlåter den övningen till dig.

I praktiken bör id som används för joins vara av samma typ. Du kan inte ens deklarera en främmande nyckelrelation om de inte är det. Bortsett från den bästa praxis är de två frågorna inte automatiskt likvärdiga.

Obs:Detta skulle vara lika sant om du använde korrekt, explicit, standard JOIN syntax, som jag starkt uppmuntrar dig att lära dig och använda exklusivt.



  1. Hur man visar ett datum som iso 8601-format med PHP

  2. bästa sättet att anropa två databasservrar

  3. Problem med att installera mysqlclient via pip

  4. Bästa sättet att hålla TEXT-fältet unikt i MySQL-databasen