Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Ajouter une ligne vide aux résultats de la requête si aucun résultat n'a été trouvé

Très peu d'options, j'en ai peur.

Vous devez toujours toucher la table deux fois, que ce soit COUNT, EXISTS before, EXISTs in UNION, TOP clause etc

select
    id, category
from mytable
where category = @category
union all --edit, of course it's quicker
select
    0, ''
where NOT EXISTS (SELECT * FROM mytable where category = @category)

Une solution EXISTS est préférable à COUNT car elle s'arrêtera lorsqu'elle trouvera une ligne. COUNT parcourra toutes les lignes pour les compter réellement