sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvorfor kan PostgreSQL ikke gøre dette simple FULD JOIN?

PostgreSQL implementerer FULD YDRE JOIN med enten en hash eller en flette-join.

For at være berettiget til en sådan deltagelse skal deltagelsesbetingelsen have formularen

Nu gør din deltagelsesbetingelse se sådan ud, men PostgreSQL har ikke en speciel IS NOT DISTINCT FROM operator, så den analyserer din tilstand til:

(IKKE ($1 er forskellig fra $2)) 

Og sådan et udtryk kan ikke bruges til hash eller merge joins, deraf fejlmeddelelsen.

Jeg kan komme i tanke om en måde at omgå det på:

SELECT a_id, NULLIF(a_value, ''), b_id, NULLIF(b_value, '')FROM (SELECT id AS a_id, COALESCE(value, '') AS a_value FROM a ) x FULD JOIN (SELECT id AS b_id, COALESCE(value, '') AS b_value FROM b ) y ON x.a_value =y.b_value; 

Det virker hvis vises ikke nogen steder i værdien kolonner.



  1. Hvorfor udskriver PDO min adgangskode, når forbindelsen mislykkes?

  2. Generer PHP-array fra MySQL med nøgleværdi fra id-kolonnen

  3. Hvordan indstiller jeg et SQL Server-scripts timeout inde fra scriptet?

  4. Simulering af MySqls PASSWORD()-kryptering ved hjælp af .NET i Windows 8