sql >> Database >  >> RDS >> PostgreSQL

FOUT:array mag geen nulls bevatten PostgreSQL

De && operator ondersteunt NULL niet waarden. Je hebt dus een andere aanpak nodig. U kunt de gegevens bijvoorbeeld eerst aan de tabel toevoegen. Dit geeft je de id s die zijn gekoppeld aan uw vereiste gegevens. Bij de tweede stap kunt u alle waarden rangschikken met behulp van deze id v.

stapsgewijze demo:db<>fiddle

SELECT
    id,
    ARRAY_AGG(session_os)                        -- 4                         
FROM t
WHERE id IN (                                    -- 3
    SELECT 
        id
    FROM
        t
    JOIN (
        SELECT unnest(ARRAY[1, null]) as a       -- 1
    )s ON s.a IS NOT DISTINCT FROM t.session_os  -- 2
)
GROUP BY id
  1. Maak een tabel of zoekresultaat met uw relevante gegevens, incl. de NULL waarde.
  2. Je kunt de gegevens samenvoegen, incl. de NULL waarde, met behulp van de operator IS NOT DISTINCT FROM , die rekening houdt met de NULL .
  3. Je hebt nu de relevante id opgehaald waarden die kunnen worden gebruikt in de WHERE filter
  4. Eindelijk kunt u uw aggregatie doen


  1. MMO-games en database-ontwerp

  2. Gegevens uit de kolom van een tabel invoegen en in een andere tabel opslaan

  3. Passeer en retourneer een aangepast array-object in ibatis en oracle in java

  4. Vergrendelt MySql automatisch rijen of moet ik een vergrendeling toevoegen in de deelmodus?