sql >> Databasteknik >  >> RDS >> Oracle

Oracle:Få en fråga för att alltid returnera exakt en rad, även när det inte finns någon data att hitta

Det finns sätt att göra detta enklare och renare, men detta förklarar i princip tekniken:

SELECT data_name
FROM data_table
WHERE data_table.type = v_t_id

UNION ALL

SELECT NULL AS data_name
FROM dual
WHERE NOT EXISTS (
    SELECT data_name
    FROM data_table
    WHERE data_table.type = v_t_id
)

När den första delen av föreningen är tom kommer den andra att innehålla en rad, när den första delen inte är tom innehåller den andra inga rader.

Om frågan tar för mycket tid, använd den här:

SELECT * FROM (  
    SELECT data_name
    FROM data_table
    WHERE data_table.type = v_t_id

    UNION ALL

    SELECT NULL AS data_name
    FROM dual
  ) WHERE data_name is not null or ROWNUM = 1


  1. Python och MySQL utskriftsresultat

  2. MySQL-fel:nyckelspecifikation utan nyckellängd

  3. Hur ställer du in en standardpersonsökare för MySQL-klienten?

  4. Har replicate-rewrite-db någon verklig applikation?