Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle:Вземете заявка, която винаги да връща точно един ред, дори когато няма данни за намиране

Има начини да направите това по-просто и по-чисто, но това основно изяснява техниката:

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
)

Когато първата част на обединението е празна, втората ще съдържа ред, когато първата част не е празна, втората няма да съдържа редове.

Ако заявката отнема твърде много време, използвайте тази:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. По-ефективен начин за намиране на служители с покритие между две дати

  2. Можем ли да преразпределим Oracle tools.jar?

  3. Помогнете ми да поставя терминологията на Oracle в терминологията на SQL Server

  4. Как мога да конфигурирам местоположението на моя файл tnsnames на Oracle?

  5. Промиване на единичен курсор