sql >> Database teknologi >  >> RDS >> Oracle

Oracle:Få en forespørgsel om altid at returnere præcis én række, selv når der ikke er nogen data at finde

Der er måder at gøre dette mere enkelt og renere på, men dette forklarer i bund og grund teknikken:

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ørste del af foreningen er tom, vil den anden indeholde en række, når den første del ikke er tom, vil den anden ikke indeholde rækker.

Hvis forespørgslen tager for lang tid, skal du bruge denne:

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. MySQL Vælg :hvor tiden er større og mindre end tiden

  2. PHP PDO hente null

  3. Database mislykkedes i Jboss-datakilder

  4. Hvordan kan jeg få emacs sql-mode til at bruge mysql-konfigurationsfilen (.my.cnf)?